会话技术Cookie案例

tech2025-09-05  18

import jakarta.servlet.ServletException; import jakarta.servlet.annotation.WebServlet; import jakarta.servlet.http.Cookie; import jakarta.servlet.http.HttpServlet; import jakarta.servlet.http.HttpServletRequest; import jakarta.servlet.http.HttpServletResponse; import java.io.IOException; import java.net.URLDecoder; import java.net.URLEncoder; import java.nio.charset.StandardCharsets; import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Date; @WebServlet("/CookieTest") public class CookieTest extends HttpServlet { @Override protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=UTF-8"); Cookie[] cookies = request.getCookies(); boolean flag = false; if(cookies != null && cookies.length > 0){ for (Cookie cookie : cookies) { String name = cookie.getName(); if("lastTime".equals(name)){ flag = true; //格式化时间戳 Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String str_date = sdf.format(date); //进行URL编码,来解决时间戳的空格 System.out.println("编码前:" + str_date); str_date = URLEncoder.encode(str_date , StandardCharsets.UTF_8); System.out.println("编码后:" + str_date); cookie.setValue(str_date); cookie.setMaxAge(60 * 60 * 24 * 30); response.addCookie(cookie); String value = cookie.getValue(); //URL解码 System.out.println("解码前:" + value); value = URLDecoder.decode(value , StandardCharsets.UTF_8); System.out.println("解码后:" + value); response.getWriter().write("欢迎再次归来,您上次登陆时间为" + value); break; } } } if (cookies == null || flag == false || cookies.length == 0){ Date date = new Date(); SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日 HH:mm:ss"); String str_date = sdf.format(date); System.out.println("编码前:" + str_date); str_date = URLEncoder.encode(str_date , StandardCharsets.UTF_8); System.out.println("编码后:" + str_date); //添加一个新的cookie Cookie cookie = new Cookie("lastTime", str_date); cookie.setMaxAge(60 * 60 * 24 * 60); response.addCookie(cookie); response.getWriter().write("欢迎首次登陆"); } } @Override protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
最新回复(0)