JavaWeb(HttpSession与Cookie)学习笔记一

cookie的做用域

cookie只可以传到当前目录以及如下的目录,不能够传到上一目录。web

HttpSession的建立

  1. HttpSession的生命周期:

1).何时建立HttpSession对象
①.对于JSP:是否浏览器访问服务端的任何一个JSP,服务器都会当即建立一个HttpSession对象呢?不必定。浏览器

若当前的JSP是客户端访问的当前WEB应用的第一个资源,且JSP的page指定的session属性值为false,
则服务器就不会为JSP建立一个HttpSession对象;

若当前JSP不是客户端访问的当前WEB应用的第一个资源,且其余页面已经建立一个HttpSession对象,
则服务器也不会为当前JSP页面建立一个HttpSession对象,而回会把和当前会话关联的那个HttpSession对象返回给当前的JSP页面.服务器

②.对于Serlvet:若Serlvet是客户端访问的第一个WEB应用的资源,cookie

则只有调用了request.getSession()或request.getSession(true)才会建立HttpSession对象
当request.getSession(false)的时候若是没有与当前页面关联的HttpSession对象的时候就会返回null,
当request.getSession(true)(request.getSession(boolean create))的时候就会直接返回一个HttpSession对象 同request.getSession()。

总结:当客户端访问web第一个资源而且当前JSP或者Servlet没有禁用当前页面的默认建立的Session对象或者没有调用request.getSession(false)方法的时候就会返回一个HttpSession对象。session

2). session="false" 到底表示什么意思?当前JSP页面禁用session隐含变量!但可使用其余的显式的HttpSession对象函数

HttpSession的销毁

  1. 调用session对象的invalidate()方法会使session立刻失效。
  2. 当过了session的有效时间。
    能够经过设置其有效时间来加速失效:调用session.setMaxInactiveInterval(int
    seconds),
    或者配置web.xml文件的配置:
    <session-config><session-timeout>minutes</session-timeout> </session-config>

URL重写

浏览器把cookie被禁用的时候通常用URL重写的方法进行sessionID的跟踪,以便后续的上下文(即统一web中)可使用同一sessionID访问同一session对象,其中进行URL重写的方法有两个:url

  • encodeURL(String url)resonpse.encodeURL(String url)
  • encodeRedirectURL(String url)response.sendRedirect(response.encodeRedirect(String url))code

    相同点:两个会在cookie禁用的状况下对URL进行加上JsessionId的重写,固然,若是没有禁用,两者也不会对URL进行重写。
    不通点:后者会对URL指向的资源进行判断,若是不是本web应用里的资源路径也不会进行SessionID的添加,所以该函数URL参数必须是绝对路径。
相关文章
相关标签/搜索