文章目录
7 Cookie、Session
7.1 会话
-
会话:用户打开一个浏览器,点击了很多超链接,访问多个web资源,关闭浏览器,这个过程可以称之为会话
-
有状态会话:一个同学来过教室,下次再来教室,我们会知道这个同学曾经来过,称之为有状态会话
你能怎么证明你是b站的学生? 发票(b站给你发票)、登记记录(b站标记你来过了)
- 服务端给客户端一个 信件 ,客户端下次访问服务端带上信件就可以了;cookie
- 服务器登记你来过了,下次你来的时候我匹配你;session
7.2 保存会话的两种技术
cookie
- 客户端技术(响应,请求)
session
- 服务器技术,利用这个技术,可以保存用户的会话信息。我们可以把信息或数据放在Session中
常见场景:网站登录之后,你下次不用在登陆了,第二次在访问就直接上去了
7.3 Cookie
- 从请求中拿到cookie信息
- 服务器响应给客户端cookie
Cookie[] cookies = req.getCookies(); //获得Cookie
cookie.getName(); //获得cookie中的key
cookie.getValue(); //获得cookie中的value
new Cookie("lastLoginTime", System.currentTimeMillis() + ""); //新建一个cookie
cookie.setMaxAge(24 * 60 * 60); //设置cookie的有效期
resp.addCookie(cookie); //响应给客户端一个cookie
//保存用户上一次访问的时间
public class CookieDemo01 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//服务器告诉你,你来的时间,把这个时间封装成为一个信件,你下次带来我就知道你来了
//解决中文乱码
resp.setContentType("text/html");
req.setCharacterEncoding("utf-8");
resp.setCharacterEncoding("utf-8");
PrintWriter out = resp.getWriter();
//Cookie,服务器端从客户端获取
Cookie[] cookies = req.getCookies(); //这里返回数组,说明Cookie可能存在多个
//判断Cookie是否存在
if (cookies != null){
//如果存在怎么办
out.write("你上一次访问的时间是:");
for (int i = 0; i < cookies.length; i++) {
Cookie cookie = cookies[i];
//获取cookie的名字
if (cookie.getName().equals("lastLoginTime")){
//获取cookie中的值
long l = Long.parseLong(cookie.