添加:显示上次访问时间的cookies

This commit is contained in:
2025-03-24 14:05:22 +08:00
parent 4f4664995c
commit 255c56378d
3 changed files with 106 additions and 25 deletions
+1
View File
@@ -1,5 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<project version="4">
<component name="GradleMigrationSettings" migrationVersion="1" />
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
+38 -25
View File
@@ -8,7 +8,8 @@
</component>
<component name="ChangeListManager">
<list default="true" id="4dd01e6d-ac98-4220-877b-dfc51a5bbe9c" name="更改" comment="">
<change beforePath="$PROJECT_DIR$/.idea/misc.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/misc.xml" afterDir="false" />
<change afterPath="$PROJECT_DIR$/src/main/java/com/msksbr/test/servlet/servlet/cookies/LastAccessServlet.java" afterDir="false" />
<change beforePath="$PROJECT_DIR$/../../homework2/.idea/gradle.xml" beforeDir="false" afterPath="$PROJECT_DIR$/../../homework2/.idea/gradle.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
</list>
<option name="SHOW_DIALOG" value="false" />
@@ -21,6 +22,13 @@
<ProjectState />
</projectState>
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
<list>
<option value="Class" />
</list>
</option>
</component>
<component name="FormatOnSaveOptions">
<option name="myRunOnSave" value="true" />
</component>
@@ -41,35 +49,39 @@
&quot;associatedIndex&quot;: 5
}</component>
<component name="ProjectId" id="2uCvpUspkjjEe0ld0gTakT89nEb" />
<component name="ProjectLevelVcsManager">
<ConfirmationsSetting value="2" id="Add" />
</component>
<component name="ProjectViewState">
<option name="hideEmptyMiddlePackages" value="true" />
<option name="showLibraryContents" value="true" />
</component>
<component name="PropertiesComponent">{
&quot;keyToString&quot;: {
&quot;Gradle.构建 servlet.executor&quot;: &quot;Run&quot;,
&quot;RunOnceActivity.ShowReadmeOnStart&quot;: &quot;true&quot;,
&quot;RunOnceActivity.git.unshallow&quot;: &quot;true&quot;,
&quot;Tomcat 服务器.Tomcat 11.0.51.executor&quot;: &quot;Run&quot;,
&quot;code.cleanup.on.save&quot;: &quot;true&quot;,
&quot;git-widget-placeholder&quot;: &quot;master&quot;,
&quot;kotlin-language-version-configured&quot;: &quot;true&quot;,
&quot;node.js.detected.package.eslint&quot;: &quot;true&quot;,
&quot;node.js.detected.package.tslint&quot;: &quot;true&quot;,
&quot;node.js.selected.package.eslint&quot;: &quot;(autodetect)&quot;,
&quot;node.js.selected.package.tslint&quot;: &quot;(autodetect)&quot;,
&quot;nodejs_package_manager_path&quot;: &quot;npm&quot;,
&quot;project.structure.last.edited&quot;: &quot;模块&quot;,
&quot;project.structure.proportion&quot;: &quot;0.0&quot;,
&quot;project.structure.side.proportion&quot;: &quot;0.0&quot;,
&quot;rearrange.code.on.save&quot;: &quot;true&quot;,
&quot;run.code.analysis.last.selected.profile&quot;: &quot;pProject Default&quot;,
&quot;settings.editor.selected.configurable&quot;: &quot;actions.on.save&quot;,
&quot;vue.rearranger.settings.migration&quot;: &quot;true&quot;
<component name="PropertiesComponent"><![CDATA[{
"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": "reference.settingsdialog.IDE.editor.postfix.templates",
"vue.rearranger.settings.migration": "true"
}
}</component>
}]]></component>
<component name="RunManager">
<configuration name="Tomcat 11.0.51" type="#com.intellij.j2ee.web.tomcat.TomcatRunConfigurationFactory" factoryName="Local" APPLICATION_SERVER_NAME="Tomcat 11.0.51" ALTERNATIVE_JRE_ENABLED="false">
<option name="OPEN_IN_BROWSER_URL" value="http://localhost:8080/Gradle___com_msksbr_test_servlet___servlet_1_0_SNAPSHOT_war" />
<option name="UPDATING_POLICY" value="hot-swap-classes" />
<deployment>
<artifact name="Gradle : com.msksbr.test.servlet : servlet-1.0-SNAPSHOT.war">
@@ -161,8 +173,8 @@
<component name="SharedIndexes">
<attachedChunks>
<set>
<option value="bundled-jdk-9823dce3aa75-a94e463ab2e7-intellij.indexing.shared.core-IU-243.25659.59" />
<option value="bundled-js-predefined-d6986cc7102b-1632447f56bf-JavaScript-IU-243.25659.59" />
<option value="bundled-jdk-9823dce3aa75-a94e463ab2e7-intellij.indexing.shared.core-IU-243.26053.27" />
<option value="bundled-js-predefined-d6986cc7102b-1632447f56bf-JavaScript-IU-243.26053.27" />
</set>
</attachedChunks>
</component>
@@ -177,6 +189,7 @@
<workItem from="1741765555514" duration="727000" />
<workItem from="1742184110126" duration="1297000" />
<workItem from="1742185427721" duration="1266000" />
<workItem from="1742790706226" duration="2930000" />
</task>
<servers />
</component>
@@ -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);
}
}