一、HttpSession
1、在服务器端保持Http信息的方案,和其对应的是Cookie
2、产生HttpSession对象的过程:
当程序需要为某个客户端的请求创建session时,服务器会首先检查这个请求是否包含JsessionID。
若有,说明以前创建过,直接检索出来使用。
若没有,则为客户创建一个session,并生成jsessionID,然后返回给客户端保存。
3、使用cookie跟踪session:
session是以cookie或url重写为基础的,默认使用cookie实现,系统通常会创建一个JsessionID的cookie来区分session,存在于浏览器存储中,不存在硬盘上,所以通常看不见JsessionID。
二、HttpSession的生命周期
1、创建
① session不一定在有客户端访问时就被创建
若把 session 属性改为 false, JSP 页面不会要求一定有一个 Session 对象和当前的 JSP 页面相关联
所以若第一次访问当前 WEB 应用的 JSP 页面时, 就不会创建一个 Session 对象.
② 何时创建
A. server端程序如(servlet)调用HttpServletRequest.getSession(true)或 HttpServletRequest.getSession()这样的语句时才会被创建
2、销毁
②. HttpSession 超过过期时间.
> 设置最大时效: setMaxInactiveInterval(int interval)
> 可以在 web.xml 文件中配置 Session 的最大时效, 单位是分钟.
<session-config>
<session-timeout>30</session-timeout>
</session-config>
注意: 关闭浏览器不会销毁 Session!
三、HttpSession相关的API
1、获取session对象:request.getSession(),request.getSession(boolean create)
2、属性相关的:setAttribute(),getAttribute(),removeAttribute()
3、使session失效的:invalidate()
4、设置最大失效时间:setMaxInactiveInterval()
四、URL重写:
1、Servlet中补充的会话管理机制,允许在不支持cookie的浏览器也可以与web服务器保持连续的会话
2、将会话标志以参数的形式加在url后称为url重写技术
3、代码
<a href="<%response.encodeURL("login.jsp")%>">重新登陆</a>