Servlet HttpSession

本文围绕HttpSession展开,介绍其是服务器端保持HTTP状态信息的方案,与Cookie对应。阐述了产生HttpSession对象的过程,通过sessionId区分客户,默认用Cookie实现。还说明了其生命周期,如创建条件,强调关闭浏览器不会销毁Session,此外还提及相关API和URL重写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1. HttpSession

1.HttpSession: 在服务器端保持HTTP状态信息的方案,和其对应的是Cookie
2. 产生HttpSession对象的过程: 当程序需要为某个客户端的请求创建一个session时,服务器首先检查这个客户端的请求里是否包含了一个session标识(即sessionId)
如果已经包含一个sessionId,则说明以前已经为此用户创建过session,服务器就按照sessionId把这个session检索出来使用(如果检索不到,可能会新建一个,这种情况可能出现在服务端已经删除了该用户对应的session对象,但用户人为的在请求的URL后面附加上一个JSESSION的参数).
如果客户请求不包含sessionId,则为此客户创建一个session并且生成一个与此session相关联的sessionid这个sessionid将在本次响应中返回给客户端保存
3. 使用Cookie来跟踪Session: session通过sessionId来区分不同的客户,session是以cookie或URL重写为基础的,默认使用cookie来实现
系统会创造一个名为JSESSIONID的输出cookie,这个称之为session cookie,session cookie是存储于浏览器内存中,并不是写到硬盘上的,通常看不到JSESSIONID

2. HttpSession的生命周期:
  1. 创建一个HttpSession对象:
    一个常见的错误是以为session在有客户端访问时被创建(若第一次访问某web应用的一个JS页面,且该JSP页面的page指定的session属性为false)
    ①某server端程序(如Servlet)调用HttpServletRequest.getSession(true)或者 HttpServletRequest.getSession()这样的语句时才会创建
    ②若第一次访问某web应用的一个JS页面,且该JSP页面的page指定的session属性为true,服务器会自动为该页面分配一个HttpSession对象
2. 销毁HttpSession对象

	①. 直接调用 HttpSession 的 invalidate()

   ②. HttpSession 超过过期时间. 
   > 返回最大时效: getMaxInactiveInterval() 单位是秒
    > 设置最大时效: setMaxInactiveInterval(int interval)
    
     可以在 web.xml 文件中配置 Session 的最大时效, 单位是分钟. 
      ```
	<session-config>  
	    <session-timeout>30</session-timeout>
	</session-config>
	 ```
   ③. 卸载当前 WEB 应用. 

注意: 关闭浏览器不会销毁 Session!

3.HttpSession的相关的API
1).获取Session对象:request.getSession()、request.getSession(boolean create)

2).属性相关的:setAttribute,getAttribute,removeAttribute

3).使HttpSession失效的,invalidate()方法

4).设置其最大失效的setMaxInactiveInternal
4.URL重写
1).Servlet规范中引入了一种补充的会话管理机制,它允许不支持Cookie的浏览器也可以与WEB服务器保持连续的会话。

2).将会话标识号以参数形式附加在超链接的URL地址后面的技术称为URL重写

 3).encodeURL方法,encodeRedirectURL方法
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值