狂神说Java Web学习笔记_Cookie
会话
用户打开一个浏览器,点击了很多链接,访问了很多web资源,关闭浏览器之后,这个过程可以称之为一次会话。
有状态会话
一个同学来过教室,大家看到了,下次再来教室的时候,我们会知道这个同学曾经来过,这个被称为有状态会话。
一个网站如何证明你访问过?
服务端给客户端一个信件,客户端下次访问服务端的时候带上信件—cookie
服务端登记你来过,下次你再来的时候服务端来匹配你—session
保存会话的两种技术
Cookie
客户端技术(响应,请求)
Session
服务端技术,利用这个技术,可以保存用户的会话信息。我们可以把信息或者数据放在session中。
常见应用场景
你登录网站之后,关闭浏览器之后,下次再访问网站的时候不需要再重新填写信息登录了,直接就登录进去了。
Cookie
- 从请求中拿到Cookie信息
- 服务器响应给客户端Cookie
原理图
保存上一次访问浏览器时间
package com.dawn.cookie; import javax.servlet.ServletException; 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.PrintWriter; import java.util.Date; public class CookieDemo01 extends HttpServlet { @Override protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { req.setCharacterEncoding("utf-8"); resp.setCharacterEncoding("utf-8"); resp.setContentType("text/html;charset=utf-8"); PrintWriter out = resp.getWriter(); Cookie[] cookies = req.getCookies(); if (cookies != null) { boolean hasLastLoginTime = false; for (int i = 0; i < cookies.length; i++) { if (cookies[i].getName().equals("lastLoginTime")) { long l = Long.parseLong(cookies[i].getValue()); Date date = new Date(l); String lastLoginTime = date.toLocaleString(); out.print("上一次的登录时间为:" + lastLoginTime); hasLastLoginTime = true; break; } } if (!hasLastLoginTime) { out.print("这是你第一次登录~"); } } else { out.print("这是你第一次登录~"); } resp.addCookie(new Cookie("lastLoginTime", System.currentTimeMillis() + "")); } }
<servlet> <servlet-name>cookieDemo01</servlet-name> <servlet-class>com.dawn.cookie.CookieDemo01</servlet-class> </servlet> <servlet-mapping> <servlet-name>cookieDemo01</servlet-name> <url-pattern>/cookieDemo01</url-pattern> </servlet-mapping>
<dependencies> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.3</version> </dependency> </dependencies>
uploading-image-57331.png
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步