Servlet(session的使用)

来源:互联网 发布:南宁广电网络营业厅 编辑:程序博客网 时间:2024/04/29 01:14

出处:http://blog.csdn.net/zhaoming262350/article/details/8776735

Web服务器跟踪客户状态通常的方法:
建立含有跟踪的数据隐藏字段:
重写包含额外参数的URL
使用持续的session
使用Servlet API中的Session(会话)机制。

Session用于跟踪客户状态。Session指在一段时间内,单个客户与Web服务器的一连串相关的交互过程。在一个Session中,客户可能会多次请求同一个网页,也有可能请求访问各种不同的服务资源。

Session的运行机制:
当一个Session开始时,Servlet容器将创建一个HttpSession的对象,在HttpSession对象中可以存放客户状态的信息。

 Servlet容器为HttpSession分配一个惟一的标识符,称为Session ID。Servlet容器把Session ID作为Cookie保存在客户的浏览器中。

每次客户发出Http请求时,Servlet容器可以从HttpServletRequest对象中读取Session ID,然后根据Session ID找到相应的HttpSession对象,从而获得与用户的状态信息。
session中常用的方法:
<body>
  //得到一个session ID
   session id:<%=session.getId() %>
   //设置一个session ID存在的时间
   <%session.setMaxInactiveInterval(10);%>
   //判断是否有一个新的sessionID产生
    <%=session.isNew() %>
  </body>



Session的生命周期:当客户第一次访问Web应用中支持Session的某个网页时,就会开始一个新的session.
接下来当客户浏览这个Web应用的不同网页时,始终处于同一个session 中。
默认情况下JSP网页都是支持session的。
<%@ page session = "true"%>如果把“true”改成“false”这个网页就不支持session了。

Session生命周期结束的标志(只要生命周期结束,Servlet容器会将session所占有的资源释放掉):
客户端关闭浏览器:严格说不行,做不到这一点,可以做一点努力的办法是在所有的客户端页面里使用javascrip代码window。onclose来监听浏览器的关闭动作,然后再向服务器发送一个请求删除session。

Session过期:指当Session开始后,在一段时间内客户没有和Web服务器交互,这个session会失效。
服务器调用了HttpSession的invalidate()方法;
maillogin.jsp

<body>
  <%
  String  username="";
  if(!session.isNew())
  {
      username=(String)session.getAttribute("username");
      
      if(null == username)
      {
          username="";
      }
  }
  %>
   <p>username ID:<%=session.getId() %></p>
 
  <form action="mailCheck.jsp">
  username:<input type="text" name="username" value="<%=username %>"><br>
  <input type="submit" value="submit">
 
  </form>
  </body>

mailCheck.jsp
  <body>
   <%
   String username=request.getParameter("username");
   session.setAttribute("username",username);
   %>
   <a href=maillogin.jsp>转向登录</a><br>
   <a href=maillogout.jsp>注销</a><br>
   <p>当前用户:<%=username %></p>
   <p>你的邮件有100封邮件</p>
  </body>

maillogout.jsp
 <body>
    <%String username = (String)session.getAttribute("username");
    session.invalidate();
    %>
    <%=username %>
    <br>
    <p>再见</p><br>
    <a href="maillogin.jsp">重新登录</a>
  </body>

0 0