会话管理流程

会话管理

1.什么是会话管理

在人机交互,会话管理是保持用户的整个会话活动的互动与计算机系统跟踪过程。

2.为什么要使用会话管理

在解决这个问题前,我们要先了解什么是http协议

Http协议:超文本连接协议。

Http的两大特性
1.面向连接—>请求响应式---->服务器被动请求
do/get(HttpServletRequest,HttpServletResponse),这两个对象完美契合了面向连接这一特性。
2.无记忆性—短连接
无记忆性是指当我们第二次访问同一地址时,网络是无记忆的。然而我们想记录下来我们的每一次操作,我们就需要使用会话管理技术了。

3.会话管理(Session)

服务器能处理不同request请求,对每个用户都保持会话,每个会话安全。

  • 保持记录
  • 时效性:默认为30min
  • 会话安全

4.如何实现会话管理

4.1 cookie( 浏览器)

  • 存在于浏览器
  • 存活时间:浏览器关闭
  • 存文本
  • 数据量比较小
  • 不安全
  • JSseeionId

4.2 HttpSession

  • 存在于服务器
  • 存活时间:默认为30min
  • 存对象
  • 不建议大数据
  • 安全
  • 产生SessionId

4.3 会话管理完整流程

  1. 客户端A向服务器发起请求
  2. 服务器创建一个Session对象(会话管理对象)
  3. 服务器获得Session对象的id值(SessionId)
  4. 服务器中可以看到SessionId=acbe12423432525…(一个16进制的id),和服务器之间的唯一值
  5. 客户端A再次发起请求,自动携带cookie(JSessionId)
  6. 服务器发现携带的JSessionId,取出值,在服务器内找到session对象
  7. 取出session的内容

5.会话管理实例

@WebServlet("/session.action")
public class SessionServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;

	
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		request.setCharacterEncoding("utf-8");
		response.setContentType("text/html;charset=utf-8");
		
		HttpSession session = request.getSession();
		//session.setMaxInactiveInterval(60);
		session.setAttribute("key", "我是session值,时间为30min");
		
		System.out.println(session.getId());
		
		//创建一个cookie对象
		Cookie cookie =new Cookie("hello", "cookie");
		response.addCookie(cookie);//将cookie传到页面上
		
		response.sendRedirect("session.jsp");//重定向,相当于跳转
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		doGet(request, response);
	}

}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值