Cookie浏览器会话技术显示上一次登陆时间

版权声明:本文为博主原创文章,未经博主允许不得转载。如果引起争议,需负法律责任,后果自负。 https://blog.csdn.net/lvhaoguang0/article/details/84584090

案例:  可以显示上一次登陆时间
    记录上次访问的时间
    需求:
        当用户第一次登陆的时候,提示:你是第一次登陆,且记录该次访问时间。
        下一次访问的时候,获取上次访问时间且展示出来.
    cookie 由服务器生成,通过response将cookie写回浏览器(set-cookie),保留在浏览器上,
    下一次访问的时候,浏览器会根据一定的规则携带不同的cookie(通过request的头cookie),我们服务器可以接收cookie
    会话分类:
        cookie:浏览器端会话技术
        session:服务器端的会话技术
    cookie的api:
        new Cookie(String key,String value)
    写回浏览器:
        response.addCookie(Cookie c);
    获取cookie:
        Cookie[] request.getCookies();
    Cookie的常用方法:
        getName():获取Cookie的key名称
        getValue():获取Cookie的值

    步骤分析:
        1.创建一个servlet RemServlet lastTime
        2.在servle中:
            获取指定cookie 例如:名称为lastTime
                request.getCookies()
            判断cookie是否为空:
                若为空:提示信息,第一次访问
                若不为空:'
                    获取此cookie的value
                    展示信息:你上次访问的时间是...
            将这次访问时间记录,写回浏览器
            
    cookie总结:
        常用总结:
            setMaxAge("秒");            //设置Cookie在浏览器端的存活时间
                若设置成为0:删除该Cookie(前提必须路径一致)
            setPath(String path):设置cookie的路径.
            当我们访问的路径中包含了此Cookie的Path,则携带过去
            默认路径:
                访问servlet的路径,从"/项目名称"开始,到最后一个"/"结束
                例如:
                    访问的servlet的路径:
                        /Cookie_Session/servlet/RemberServlet
                    手动设置路径:
                        以"/项目名"开始,以"/"结尾

           

package com.nyist.Cookie.Rem;

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

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

public class RemberServlet extends HttpServlet {
	@Override
	public void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//0.设置编码
		req.setCharacterEncoding("UTF-8");
		resp.setCharacterEncoding("UTF-8");
		resp.setContentType("text/html;charset=utf-8");
		PrintWriter outPrintWriter = resp.getWriter();
		//1.获取指定的cookie
		Cookie cookie = getCookieByName("lastTime",req.getCookies());
		//2.判断cookie 是否为空
		if(cookie==null){
			//cookie 为空提示第一次时间
			outPrintWriter.write("您是第一次访问!");
		}else{
			//cookie 不为空 显示上一次登陆时间
			String value = cookie.getValue();  //lastTime=12123454
			long time = Long.parseLong(value);
			Date date = new Date(time);
			SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd E hh:mm:ss");
			outPrintWriter.print("Cookie名称:"+cookie.getName()+"\n"+"Cookie值:"+cookie.getValue()+"\n"+"CookeiePath:"+cookie.getPath());
			outPrintWriter.print("你上次访问的时间:"+simpleDateFormat.format(date));
		}
		//3.将当前访问时间记录
		//3.1创建Cookie
		cookie = new Cookie("lastTime",new Date().getTime()+"");
		//3.2 写回浏览器
		resp.addCookie(cookie);
		
	}

	private Cookie getCookieByName(String value, Cookie[] cookies) {
		if(cookies!=null){
			for (Cookie cookie : cookies) {
				if(cookie.getName().equals(value)){
					return cookie;
				}
			}
		}
		return null;
		
	}
}

 结果:

猜你喜欢

转载自blog.csdn.net/lvhaoguang0/article/details/84584090