JavaWeb——HttpSession总结

来源:互联网 发布:java贪吃蛇游戏代码 编辑:程序博客网 时间:2024/06/04 23:12

一、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()这样的语句时才会被创建        

               》request.getSession(flag): 若 flag 为 true, 则一定会返回一个 HttpSession 对象, 如果已经有和当前 JSP 页面关联的 HttpSession对象, 直接返回; 如果没有, 则创建一个新的返回. flag 为 false: 若有关联的, 则返回; 若没有, 则返回 null
               》request.getSession(): 相当于 request.getSession(true);
          B. 若把 session 属性改为 true, 第一次访问当前 WEB 应用的 JSP 页面时, 就会创建一个 Session 对象.

2、销毁     

       ①. 直接调用 HttpSession 的 invalidate()
       ②. HttpSession 超过过期时间.

       > 返回最大时效: getMaxInactiveInterval() 单位是秒
       > 设置最大时效: setMaxInactiveInterval(int interval)
       > 可以在 web.xml 文件中配置 Session 的最大时效, 单位是分钟.
 
 <session-config>
        <session-timeout>30</session-timeout>
    </session-config>

       ③. 卸载当前 WEB 应用.
注意: 关闭浏览器不会销毁 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>



1 0
原创粉丝点击