狂神说Java Web学习笔记_Cookie

会话

用户打开一个浏览器,点击了很多链接,访问了很多web资源,关闭浏览器之后,这个过程可以称之为一次会话。

有状态会话

一个同学来过教室,大家看到了,下次再来教室的时候,我们会知道这个同学曾经来过,这个被称为有状态会话。

一个网站如何证明你访问过

服务端给客户端一个信件,客户端下次访问服务端的时候带上信件—cookie

服务端登记你来过,下次你再来的时候服务端来匹配你—session

保存会话的两种技术

客户端技术(响应,请求)

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

posted @   growingbambi  阅读(16)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示