`

Web开发14:Session

 
阅读更多

当客户端浏览器第一次访问时,会在服务器的Servlet中产生一个sessionid,并且生成一个cookie。将sessionid放入cookie中,放入客户端浏览器。在下一次客户端浏览器访问服务器时,服务器会通过request取出客户端浏览器cookie中的sessionid与服务端中的sessionid比较,如有相同,则取出相应的session。

 

 

三个购物车互不干扰。

 

session.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
  <body>
  	session: <%=session.getId() %>
  </body>
</html>

 

输入session.jsp 页面在IE,FireFox,Chrom三个浏览器中测试,在不同浏览器中session id是不同的,但同一种浏览器的多个页签,或多个程序,session id都是相同的。但如把同一种浏览器程序全关闭,再打开一个新的窗口,则session id会发生变化。如打开一个 firefox,其session id是aaaa,再打开一个firefox程序,其session id仍是aaaa,但如果把这两个firefox程序都关闭,再打开一个新的firefox程序,则session id 会发生变化。

 

invalidate方法用于解除session 与任务对象的绑定。

invalidate.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
  <body>
  	session: 
  	<%= session.getId() %>
  	<%  
  		session.invalidate();
  	%>
  </body>
</html>

invalidate.jsp每刷新一次,session id都会发生改变。

因为每次显示完后,session id都会被解除绑定,再次刷新时,会在服务器中生成一个新的session id 。

 

 

 

J2EE API说明文档对isNew方法的说明

Returns true if the client does not yet know about the session or if the client chooses not to join the session. For example, if the server used only cookie-based sessions, and the client had disabled the use of cookies, then a session would be new on each request. 

setMaxInactiveInterval方法用于指定最大间隔时间(单位是秒)

所谓间隔是指上一次请求与下一次请求之间的间隔时间

maxInterval.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
  <body>
  	session: <%= session.getId() %>
  	<%
  		session.setMaxInactiveInterval(10);
  	 %>
  </body>
</html>

 

 maxInterval.jsp指定最大间隔时间是10秒。第一次请求过10秒后,再刷新页面,session id会发生变化。

 

如果不设置最大间隔,默认是30分钟失效。

此值在web.xml文件可配置

 

 

由于客户端的session id 是放在浏览器的会话cookie中的,浏览器关闭后,进程中的会话cookie也会被关闭,客户端的seesion id就会丢失,导致再次打开浏览器时,就无法得到服务器的与之间session id绑定的session对象,但服务器上的session对象仍然存在。

 

 

maillogin.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
  <body>
  	<%
  		String sessionid = session.getId();
  		String username = "";
  		if(!session.isNew()){
  			username = (String)session.getAttribute("username");
  		}
  	%>
  	sessionid:<%=sessionid %>
	<form action="mailcheck.jsp">
		用户名:<input type="text" name="username" value="<%=username%>"/>
		<input type="submit">
	</form>    
  </body>
</html>

 

mailcheck.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
  <body>
    <% 
    	String username = request.getParameter("username");
    	session.setAttribute("username",username);
    %>
    欢迎你 :<%=username %><br>
    <a href="maillogin.jsp">邮箱登录</a><br>
    <a href="maillogout.jsp">邮箱登出</a><br>
    您有10封新邮件!
  </body>
</html>

 

maillogout.jsp

<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<html>
  <body>
  	<%
  		String username = (String)session.getAttribute("username");
  		session.invalidate(); 
  	%>
  	<%=username%>再见!
  	<a href="maillogin.jsp">重新登录</a>
  </body>
</html>

 

在maillogout.jsp页面会将session注销。 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics