欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Java:使用Cookie记录客户端浏览器上次访问时间

程序员文章站 2024-03-20 14:12:34
...
package cn.gpxxg.web.servlet;

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 java.io.IOException;
import java.io.UnsupportedEncodingException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.Date;

@WebServlet("/servletCookieDemo03")
public class ServletCookieDemo03 extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setCharacterEncoding("utf-8");

        // 1、设置返回的格式
        response.setContentType("text/html;charset=utf-8");

        boolean flag = false;
        Cookie[] cookies = request.getCookies();
        for (Cookie cookie : cookies) {
            String name = cookie.getName();
            if ("lastTime".equals(name))
            {
                // 找到了lastTime的cookie,获取值
                flag = true;
                String value = cookie.getValue();
                System.out.println("解码前:" + value);
                value = URLDecoder.decode(value, "utf-8");
                System.out.println("解码后:" + value);

                // 设置新的cookie,记录最新的时间
                setLastTime(response, cookie);

                // 输出到页面上
                response.getWriter().write("<h1>欢迎回来,您上次的时间为" + value + "<h1>");
                break;
            }
        }

        if (flag == false)
        {
            // 如果是一次来,提示欢迎新客户来,希望有一个好的购物体验

            // 1、设置返回的格式
            response.setContentType("text/html;charset=utf-8");

            // 2、记录当前时间到cookie,发送到客户端浏览器
            this.setLastTime(response, null);

            // 3、返回内容
            response.getWriter().write("<h1>欢迎新客户来,希望有一个好的购物体验</h1>");
        }

    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        this.doPost(request, response);
    }

    public void setLastTime(HttpServletResponse response, Cookie cookie1) throws UnsupportedEncodingException {

        // 如果是lastTime的cookie,删除掉重新赋值
        if (cookie1 != null && "lastTime".equals(cookie1.getName()))
            cookie1.setMaxAge(0);

        // 时间格式
        Date date = new Date();
        SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH时mm分ss秒");
        String format = sdf.format(date);
        System.out.println("编码前:" + format);
        format = URLEncoder.encode(format, "utf-8");
        System.out.println("编码后:" + format);

        // 设置coolkie为当前时间
        Cookie cookie = new Cookie("lastTime", format);
        System.out.println(cookie);

        // 设置cookie的有效时间为1天
        cookie.setMaxAge(86400);

        response.addCookie(cookie);

    }
}

 

相关标签: java