`

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注销。 

分享到:
评论

相关推荐

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part4

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    Flask Web开发:基于Python的Web应用开发实战

    **Flask Web开发:基于Python的Web应用开发实战** Flask是Python编程语言中的一个轻量级Web应用程序框架,以其简洁、灵活的特性受到了开发者们的广泛欢迎。它遵循"微框架"理念,允许开发者自由选择如何组织项目和...

    web开发中重要的概念之session

    在Web开发中,Session是一个至关重要的概念,尤其对于构建动态网站而言。Session通常被比喻为一个黑洞,开发者可以在适当的时候将数据放入其中,需要时再取出。然而,这个“黑洞”内部的工作机制并不那么直观。本文...

    开发阶段:需要session共享做开发测试

    在开发过程中,尤其是在多服务或分布式系统中,有时我们需要在不同的服务器或应用之间共享Session来实现用户状态的保持。这通常发生在需要进行联合登录、单点登录(SSO)或者跨域资源共享(CORS)的场景。标题"开发...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part3

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part2

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    android获取web服务器端session并验证登陆

    在Android开发中,获取Web服务器端的Session并进行登录验证是一项常见的任务,特别是在构建混合式应用或者需要与Web服务紧密交互的应用中。本篇将详细阐述这个过程中的关键知识点。 一、理解Session Session是Web...

    Java Web应用开发:个人信息修改.docx

    ### Java Web应用开发:个人信息修改 #### 一、概述与目标 在Java Web应用程序中,实现用户能够修改个人信息是一项常见的需求。本篇文章将详细介绍如何在Java Web应用中实现这一功能,包括用户登录后如何访问个人...

    JAVA WEB 开发详解:XML+XSLT+SERVLET+JSP 深入剖析与实例应用.part5

    本书共分4部分,从xml、servlet、jsp和应用的角度向读者展示了java web开发中各种技术的应用,循序渐进地引导读者快速掌握java web开发。.  本书内容全面,涵盖了从事java web开发所应掌握的所有知识。在知识的讲解...

    JSP 内置对象:session 对象.pptx

    Session对象在JSP开发中扮演着关键角色,帮助开发者处理用户会话的持久性问题。通过正确使用Session对象,可以有效地跟踪用户行为,实现用户状态的保持,提升Web应用的功能和用户体验。但需要注意,过多使用Session...

    j2ee实验二:学习使用Session和Cookie

    ### j2ee实验二:学习使用Session和Cookie #### 实验背景与目标 ...这些技能对于从事Web开发工作来说是非常宝贵的。此外,通过实践操作加深了对B/S架构的理解,为将来进一步探索复杂的Web应用程序打下了坚实的基础。

    6.4: Session与Cookie 、 部署memcached 、 Session共享 、 .docx

    在Web开发中,Session和Cookie是两种常用的技术来管理用户会话状态。它们都是用来跟踪用户状态,但工作方式有所不同。 1. **Session**: - Session是服务器端存储用户信息的一种机制。当用户登录后,服务器会在...

    Web后端开发-使用Session会话跟踪技术,实现用户登录、注销

    在Web后端开发中,会话(Session)跟踪技术是一种常用的方法,用于在客户端与服务器之间维护用户状态,尤其在用户登录和注销过程中扮演着重要角色。本文将深入探讨Session的工作原理、如何实现用户登录与注销,以及...

    WEB开发 之 Session的使用.docx

    **WEB开发中的Session使用详解** 在WEB开发中,由于HTTP协议本身的无状态特性,服务器无法在用户的不同请求之间保持状态信息。为了解决这个问题,开发者引入了Session技术,以跟踪和管理用户的状态。Session主要在...

    session失效

    在Java Web开发中,可以通过调用`HttpSession`接口中的`setMaxInactiveInterval()`方法来设定Session的最大非活动间隔。具体而言: 1. **默认值与配置文件**: 当未显式调用`setMaxInactiveInterval()`方法时,默认...

    WEB开发 之 ASP Session 对象(1).docx

    ASP中的Session对象是Web开发中一个关键的概念,它主要用于跟踪用户的状态和信息。在HTTP协议无状态的特性下,服务器无法直接识别出同一用户在不同页面间的交互,而Session对象通过创建唯一标识的Cookie来解决这个...

    WEB开发 之 ASP Session 对象(2).docx

    ASP Session对象是Web开发中一个核心的概念,尤其是在经典ASP(Active Server Pages)环境中,它扮演着维护用户状态的关键角色。Session对象允许开发者在用户浏览网站的整个过程中存储和检索特定用户的数据,即使...

    Session页面之间 传值

    ### Session页面之间传值 ...综上所述,Session作为一种重要的会话管理技术,在现代Web开发中发挥着至关重要的作用。正确理解和使用Session不仅可以提高用户体验,还能有效提升应用的安全性和性能。

    Tomcat 同一服务器上 不同web项目共享session的

    总的来说,实现Tomcat服务器上不同Web项目的session共享是一个涉及多方面技术的问题,需要对Java Web开发、Tomcat服务器配置以及安全性有深入理解。根据项目的规模和复杂性,选择合适的方法可以有效地提升用户体验并...

Global site tag (gtag.js) - Google Analytics