From 255c56378d46536b83709720c1ff6dc181f8ac79 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=BE=A1=E5=9D=82=E6=98=B4?= Date: Mon, 24 Mar 2025 14:05:22 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=EF=BC=9A=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E4=B8=8A=E6=AC=A1=E8=AE=BF=E9=97=AE=E6=97=B6=E9=97=B4=E7=9A=84?= =?UTF-8?q?cookies?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- homework2/.idea/gradle.xml | 1 + test/servlet/.idea/workspace.xml | 63 ++++++++++------- .../servlet/cookies/LastAccessServlet.java | 67 +++++++++++++++++++ 3 files changed, 106 insertions(+), 25 deletions(-) create mode 100644 test/servlet/src/main/java/com/msksbr/test/servlet/servlet/cookies/LastAccessServlet.java diff --git a/homework2/.idea/gradle.xml b/homework2/.idea/gradle.xml index 39ec4f5..7d3b3e8 100644 --- a/homework2/.idea/gradle.xml +++ b/homework2/.idea/gradle.xml @@ -1,5 +1,6 @@ + - + + + + + @@ -41,35 +49,39 @@ "associatedIndex": 5 } + + + - { - "keyToString": { - "Gradle.构建 servlet.executor": "Run", - "RunOnceActivity.ShowReadmeOnStart": "true", - "RunOnceActivity.git.unshallow": "true", - "Tomcat 服务器.Tomcat 11.0.51.executor": "Run", - "code.cleanup.on.save": "true", - "git-widget-placeholder": "master", - "kotlin-language-version-configured": "true", - "node.js.detected.package.eslint": "true", - "node.js.detected.package.tslint": "true", - "node.js.selected.package.eslint": "(autodetect)", - "node.js.selected.package.tslint": "(autodetect)", - "nodejs_package_manager_path": "npm", - "project.structure.last.edited": "模块", - "project.structure.proportion": "0.0", - "project.structure.side.proportion": "0.0", - "rearrange.code.on.save": "true", - "run.code.analysis.last.selected.profile": "pProject Default", - "settings.editor.selected.configurable": "actions.on.save", - "vue.rearranger.settings.migration": "true" + +}]]> + diff --git a/test/servlet/src/main/java/com/msksbr/test/servlet/servlet/cookies/LastAccessServlet.java b/test/servlet/src/main/java/com/msksbr/test/servlet/servlet/cookies/LastAccessServlet.java new file mode 100644 index 0000000..2aa428e --- /dev/null +++ b/test/servlet/src/main/java/com/msksbr/test/servlet/servlet/cookies/LastAccessServlet.java @@ -0,0 +1,67 @@ +package com.msksbr.test.servlet.servlet.cookies; + +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.text.SimpleDateFormat; +import java.util.Date; + +@WebServlet( + name = "lastAccessServlet", + urlPatterns = "/cookies/last-access-servlet" +) +public class LastAccessServlet extends HttpServlet { + private static final long serialVersionUID = 1L; + + public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + response.setContentType("text/html;charset=UTF-8"); + Cookie[] cookies = request.getCookies(); + boolean flag = false; + if (cookies.length > 0 && cookies != null) { + for (Cookie cookie : cookies) { + String name = cookie.getName(); + if ("lastTime".equals(name)) { + flag = true; + String value = cookie.getValue(); + System.out.println("解码前:" + value); + value = URLDecoder.decode(value, "UTF-8"); + cookie.setValue("解码后:" + value); + response.getWriter().write("欢迎回来,您上次访问时间" + "为:" + value); + Date date = new Date(); + SimpleDateFormat timesdf = new SimpleDateFormat("yyyy年MM" + "月dd日 HH:mm:ss"); + String str_time = timesdf.format(date); + System.out.println("编码前:" + str_time); + str_time = URLEncoder.encode(str_time, "UTF-8"); + System.out.println("编码后:" + str_time); + cookie.setValue(str_time); + cookie.setMaxAge(60 * 60 * 24 * 30); + response.addCookie(cookie); + break; + } + } + if (cookies == null || cookies.length == 0 || !flag) { + 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, "UTF-8"); + System.out.println("编码后:" + str_date); + Cookie cookie = new Cookie("lastTime", str_date); + cookie.setMaxAge(60 * 60 * 24 * 30); + response.addCookie(cookie); + response.getWriter().write("您好,欢迎您首次访问"); + } + } + } + + public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { + this.doPost(request, response); + } +}