javaweb之每次访问的时候都在浏览器上返回上次访问的时间,原码

javaweb之每次访问的时候都在浏览器上返回上次访问的时间,原码需求:第一次访问的时候返回一个welcome,第二次访问及以后则返回上一次的访问时间首先做一个工具类,这个类的功能是找到特定名字的cookie,当然你也可以用工具类,直接将这个方法写在原码的下面直接应用,但是这个工具类还是比较有用的,很多时候都会用到,所以把它封装成了一个工具类。packagetools;importjavax.servlet.http.Cookie;publ…

大家好,又见面了,我是你们的朋友全栈君。

需求:第一次访问的时候返回一个welcome,第二次访问及以后则返回上一次的访问时间

首先做一个工具类,这个类的功能是找到特定名字的cookie,当然你也可以用工具类,直接将这个方法写在原码的下面直接应用,但是这个工具类还是比较有用的,很多时候都会用到,所以把它封装成了一个工具类。

package tools;

import javax.servlet.http.Cookie;

public class Cookiechoose {

	public static Cookie CookiegetCookieByName(Cookie[] cookies,String cookieName) {
		if(cookies==null) {
			return null;
		}else {
			for(Cookie cookie:cookies) {
				if(cookie.getName().equals(cookieName)) {
					return cookie;
				}
			}
			return null;
		}
	}

}

 下面是原码,注释中写了具体的解释:

package cn.itcast.servlet;

import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import tools.Cookiechoose;

/**
 * Servlet implementation class Time
 */
@WebServlet("/Time")
public class Time extends HttpServlet {
	private static final long serialVersionUID = 1L;
       
    /**
     * @see HttpServlet#HttpServlet()
     */
    public Time() {
        super();
        // TODO Auto-generated constructor stub
    }

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		//获取所有的cookie,化为一个数组
		Cookie[] cookies=request.getCookies();
		//通过自己构建的工具类来选出特定名字的cookie,这里设置的名字是last
		Cookie cookie=Cookiechoose.CookiegetCookieByName(cookies, "last");
		//创建一个date对象,按照Format将其改为字符串
		Date date=new Date();
		SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		String sDate=sdf.format(date);
		//如果获取的为空,则是第一次访问
		if(cookie==null) {
			//在页面上打上welcome
			response.getWriter().print("welcome");
			//第一次,所以要创建一个cookie对象,名字起为last,值为当前的时间
			Cookie c=new Cookie("last",sDate);
			//设置cookie的声明周期,0则是每次回话结束后就消失,60*60则是一小时,里面的单位是秒
			c.setMaxAge(60*60);
			//将这个cookie返回给客户端浏览器
			response.addCookie(c);
		}else {
			//这里代表第二次访问,获取以前的时间并打印出来
			String lasttime=cookie.getValue();
			response.getWriter().print("lasttime:"+lasttime+"");
			//设置一个新的时间
			cookie.setValue(sDate);
			cookie.setMaxAge(60*60);
			response.addCookie(cookie);
		}
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/156792.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 104规约笔记「建议收藏」

    104规约笔记「建议收藏」电力系统中常见的设备分为调度端(控制站、主站、客户机),服务端(被控站、子站,典型设备包含TTU、RTU等),两者之间通过104规约来进行数据通信与传输。其传输层实际上使用的是TCP协议进行数据的传输。固定端口号为2404。《电力系统104规约帧报文解析》注意这里的调度端和服务端,调度端往往安装在PC电脑上,用网线连接(可靠的网络),服务端是工业设备:TTU(distributionTransformersupervisoryTerminalUnit,配电变压器监测终端)。RTU(远程终

    2022年6月20日
    32
  • vue封装jquery修改自身以及兄弟元素的方法「建议收藏」

    vue封装jquery修改自身以及兄弟元素的方法「建议收藏」在项目中我们经常有,点击某一个元素让其自身样式发生变化,同时其兄弟元素改变的需求,最简单的就是通过Jquery来操作,但是如果需求多的话,那么我们就可以对这个方法进行封装,然后再引入使用。今天我们就来看看这个封装…目录一.引入Jquery1.下载jquery源码:2.NPM安装二.封装三.引用1.单文件应用2.全局引用四.结尾一.引入Jquery1.下载jquery源码:我们在网页中打开https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js,复制代码粘贴

    2022年10月15日
    0
  • quick-cocos 3.5 lua banding c++

    quick-cocos 3.5 lua banding c++在tools\tolua目录下有个README,里面详述了在各个平台下怎么使用,这里只是稍微记述下windows下面的使用和遇到的问题。1.首先下载AndroidNDK,版本r9b以上,自己网上找下,然后配置下环境,系统–高级系统设置–高级–环境变量,在自己用户的环境变量中新建,变量名从genbindings.py中可以看到是NDK_ROOT,变量值就是你AndroidNDK的路径。

    2022年10月9日
    0
  • 智能点餐系统开发纪实2—–系统整体结构和业务流程「建议收藏」

    1请看这里http://blog.csdn.net/jason0539/article/details/20854329 写完之前这个就没写,趁着新鲜感几天就把这个弄完了,也没再写别的东西,前几天已经完成了,今天需要写一个文档,写完文档就把里面我写的部分贴到这里来了,有点罗嗦,凑字数。其实就是讲了一个整体流程,整个系统主要分四部分:小车,手机,收银台,厨房。服务器写了两个,收银

    2022年3月11日
    40
  • 学习open62541 — [12] 加密(使用mbedTLS)

    学习open62541 — [12] 加密(使用mbedTLS)使用mbedTLS进行加密通信。

    2022年10月31日
    0
  • Mysql text MEDIUMTEXT 在5.5和5.7中的差异及扩容测试

    Mysql text MEDIUMTEXT 在5.5和5.7中的差异及扩容测试#textLENGTH#TINYTEXT:256bytes#TEXT:65,535bytes=>~64kb#MEDIUMTEXT:16,777,215bytes=>~16MB#LONGTEXT:4,294,967,295bytes=>~4GBselectversion();#5.7.17createtabletestTB(idintnotnu

    2022年5月4日
    104

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号