Session会话追踪的实现机制

1.Session

我们把这种基于唯一ID识别用户身份的机制称为Session。每个用户第一次访问服务器后,会自动获得一个Session ID。如果用户在一段时间内没有访问服务器,那么Session会自动失效,下次即使带着上次分配的Session ID访问,服务器也认为这是一个新用户,会分配新的Session ID。一次Session会话中往往包含着若干次request请求。

JavaEEServlet机制内建了对Session的支持。当我们需要获取Session时,可以通过request请求对象的getSession()方法。

package com.wuhaohua.servlet;

import java.io.IOException;
import java.util.Date;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

@WebServlet("/ses.do")
public class SessionServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		//获取会话
		HttpSession session = req.getSession();

服务器识别Session的关键就是依靠一个名为JSESSIONIDCookie。在Servlet中第一次调用req.getSession()时,Servlet容器自动创建一个Session ID,然后通过一个名为JSESSIONIDCookie发送给浏览器。

 与控制台一致!

 

 2.Cookie

Servlet提供的HttpSession本质上就是通过一个名为JSESSIONIDCookie来跟踪用户会话的。除了这个名称外,其他名称的Cookie我们可以任意使用。

创建一个新Cookie时,除了指定名称和值以外,通常需要设置setPath("/"),浏览器根据此前缀决定是否发送Cookie。如果一个Cookie调用了setPath("/user/"),那么浏览器只有在请以/user/开头的路径时才会附加此Cookie。通过setMaxAge()设置Cookie的有效期,单位为,最后通过resp.addCookie()把它添加到响应。

package com.wuhaohua.web.servlet;

import java.io.IOException;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.Cookie;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/setcook.do")
public class SetcookiesServlet extends HttpServlet{
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
		System.out.println("cookiesiiiiiiiiiiiii");
		
		Cookie cookies1 = new Cookie("phone_number", "15719290065");
		
		
		//设置过期时间
		cookies1.setMaxAge(60*60*24*7);
		//响应
		resp.addCookie(cookies1);

	}

}

 

 3.总结

  • Servlet容器提供了Session机制以跟踪用户;
  • 默认的Session机制是以Cookie形式实现的,Cookie名称为JSESSIONID
  • 通过读写Cookie可以在客户端存储数据;
  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值