狂神说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