0
点赞
收藏
分享

微信扫一扫

JavaWeb09 —— cookie案例记住上一次访问时间

拾杨梅记 2022-03-21 阅读 40

记住上一次访问时间

实现;

package com.zhou.cookie.exer; 
/**
 * @author it春和
 * @create 2022-02-24 19:09
 */

import javax.servlet.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;
import java.io.IOException;
import java.net.URLDecoder;
import java.net.URLEncoder;
import java.text.SimpleDateFormat;
import java.util.Date;

@WebServlet("/cookieExample")
public class CookieExample extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        // 设置响应的消息格式和编码
        response.setContentType("text/html;charset=utf-8");

        // 1、获取所有cookie
        Cookie[] cookies = request.getCookies();
        // 2、遍历cookies数组
        for (Cookie cookie : cookies) {
            // 3、获取cookie的名称
            String name = cookie.getName();
            // 4、判断cookie中是否有名为lasttime的cookie
            if ("lasttime".equals(name)) {
                // 表示有lasttime这个cookie 不是第一次访问
                // 1、响应数据
                String value = cookie.getValue(); // 获取cookie的value值 时间

                // TODO URL解码
                System.out.println("解码前:" + value);
                value = URLDecoder.decode(value, "utf-8");  // URL解码
                System.out.println("解码后:" + value);


                response.getWriter().write("欢迎回来,您上次访问时间为:" + value);

                // 2、写会cookie
                // 设置cookie的value值
                Date date = new Date();
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                String str_date = simpleDateFormat.format(date.getTime());

                // URL编码
                System.out.println("编码前:" + str_date);
                str_date = URLEncoder.encode(str_date, "utf-8");// URL编码
                System.out.println("编码后:" + str_date);


                // 重新设置cookie的值
                cookie.setValue(str_date);
                // 设置cookie的存活时间
                cookie.setMaxAge(60 * 60 * 24); // 存活一天
                // 重新发送cookie
                response.addCookie(cookie);

                break; // 匹配上就不再循环

            } else {
                // 是第一次访问

                Date date = new Date();
                SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss");
                String time = simpleDateFormat.format(date.getTime());

                // TODO URL编码
                System.out.println("编码前:" + time);
                time = URLEncoder.encode(time, "utf-8");// URL编码
                System.out.println("编码后:" + time);

                // 新建一个cookie
                Cookie lasttime = new Cookie("lasttime", time);
                // 设置cookie的存活时间
                lasttime.setMaxAge(60 * 60 * 24);
                // 发送cookie
                response.addCookie(lasttime);
            }

        }


    }

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

cookie在tomcat8之后支持中文 但是一些特殊字符不支持 所以我们还是使用了URL进行编码解码

在这里插入图片描述

在这里插入图片描述

举报

相关推荐

0 条评论