Session的生命周期

1).什么时候创建session对象

      1.1)是否浏览器访问服务端的任何一个JSP或servlet,服务器都会立即创建一个session对象呢?

              不一定。

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

                  若当前的JSP或servlet不是客户端访问的当前WEB应用的第一个资源,且其他页面已经创建一个session对象,则服务器也不会为当前jsp页面创建session对象,而会为当前JSP页面会返回一个会话的session对象。

       1.2)page指令的”session=false”到底是什么意思?

                  当前JSP禁用session隐含变量!但可以使用其他的显示session对象。

       1.3)对于servlet而言,什么时候创建session?

                  若servelt是第浏览器客户端访问的第一个WEB应用的资源,则只有调用了request.getSession()或request.getSession(true)才会创建session对象。

                  其中request.getSession(boolean),

                      boolean为false时,若没有和当前JSP页面关联的session对象则返回null,若有,则返回true。

                      Boolean为true时,一定返回一个session对象,若没有和当前JSP页面关联的session对象,则服务器创建一个新的session对象,若有,直接返回。

                request.getSession()等同于request.getSession(true)。

验证1.3:

a.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



  
    
    
    My JSP 'a.jsp' starting page
    
  
  
  
    to b.jsp
  

b.jsp:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"
    session="false"
%>
<%
String path = request.getContextPath();
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";
%>



  
    
    
    My JSP 'b.jsp' starting page


  
  
  
  
    <%
       HttpSession session=request.getSession(false);
    %>
    <%=session %>
  


直接访问b.jsp:

Session的生命周期_第1张图片

通过a.jsp访问b.jsp:

Session的生命周期_第2张图片

 2).什么时候销毁session对象:

      2.1).直接调用session的invalidate()方法。

    <%
       HttpSession session=request.getSession();
    %>
    <%=session.getId() %>
    <%session.invalidate(); %>
                             这样每次刷新浏览器的,都会产生新的sessionid

2.2).服务器卸载当前WEB应用。

2.3).session设置过期时间(秒)。

    <%
       HttpSession session=request.getSession();
    session.setMaxInactiveInterval(10); 
    %>
    <%=session.getId() %>
    
        2.4). 在web.xml文件中设置过期时间(分钟)。

  
    1
  


你可能感兴趣的:(session)