`
wade6
  • 浏览: 274229 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Servlet学习整理(六)——session

 
阅读更多

session简介

http是一个无状态的协议,为了实现与特定客户端的会话通信,servlet提供了session会话跟踪机制,为此提供了一个简单的HttpSession接口供开发者调用实现。

 

session的会话跟踪机制

Cookies

 

session的会话跟踪机制少不了http cookies的帮助。

 

容器发送一个cookie到客户端,客户端会记录cookie,客户端再次访问相同地址的时候会把保存的cookie返回给服务器。通过在cookie中增加一个唯一的标识属性即可实现会话跟踪的机制。

 

通常在cookie中增加JESSIONID作为这个唯一标识,其值是容器产生的一个唯一id。

 

SSL Sessions

 

在安全套接字层,HTTPS协议使用加密技术,使用一个客户端的多个请求作为session的一部分,然后servlet容器使用这些请求的数据来生成一个session。

 

URL 重写(我觉得叫 URL参数冗余 比较合适)

 

URL重写是最低性能的会话跟踪机制。

 

当客户端不接受cookie时,URL可能会作为一个基本的会话跟踪。

 

 

URL重写包括一个附加的数据,一个session id,这样的URL会被引擎解析和一个session相关联。

 

session id必须经过编码,作为URL中的路径参数,参数的名字必须是jsessionid。

 

例如:

 

http://www.myserver.com/catalog/index.html;jsessionid=1234

 

会话的完整性

 

当客户端不支持使用cookie的时候,web容器必须支持HTTP的session机制,所以web容器一般要支持URL重写机制。

 

创建一个session

当客户端不知道这个session的存在时,它被认为是一个新的session;

 

servlet设计者必须考虑到客户端不能加入session的情况。

 

session的范围

HttpSession对象的作用域是应用级别的;

 

 

虽然用于session的cookie可以服务于不同的上下文,但一个HttpSession实例只服务于一个会话。

 

 

例如:一个servlet A用RequestDispatcher去调用另一个web应用中的另一个servlet B,用于A和B的session一定是两个不同的session。

 

 

session中绑定参数

servlet可以通过一个name将对象绑定到session中。

 

在同一个servletContext中的处理同一个请求的其他servlet对session中绑定的对象都是可见的。

 

实现接口HttpSessionBindingListener的对象可以获得对象在session中绑定或删除的通知信息。

 

主要方法是:

 

  • valueBound
  • valueUnbound

 

 

session超时

在http协议中,没有一个明确的信号来标识客户端是否有效。所以只能使用超时作为验证客户端有效的机制。

 

默认的超时时间是servlet容器设定的,可以通过HttpSession接口的getMaxInactiveInterval方法来获取,也可以使用setMaxInactiveInterval方法自定义设置。

 

超时时间是以秒为单位的,如果设置为-1,那么session永不过期。

 

当调用session的所有servlet都退出service方法后,这个session就被认定为失效的,后续新的请求都不能再使用它。

 

最后访问时间

在当前的请求中用HttpSession接口的getLastAccessedTime可以获得最后一次访问session的时间。

 

 

重要的会话语义

线程问题

 

多线程的请求处理可能同时引用的同一个session对象,开发者要注意session的同步问题。

 

分布式环境

 

分布式的应用中,一个session的多个请求必须一次被同一个jvm处理。

 

容器必须能够处理所有通过setAttribute和putValue设置到session的对象。

 

为此,需要有下面的限制条件:

 

  • 容器必须能够访问实现了Serializable接口的对象
  • 容器可以选择存储session中指定的对象
  • session的迁移必须由容器特殊设备来处理

 

客户端语义

 

由于cookies或SSL证书都是被web浏览器访问过程控制的,与任何特殊的window窗口浏览器是没有关系的。

 

从客户端的窗口发出的请求可能是同一个会话,所以开发者可以认定从客户端窗口访问的请求可以作为同一个会话。

 

 

 

 

 

分享到:
评论

相关推荐

    学报管理系统(jsp+servlet+javabean)

    本系统采用经典的Java Web开发技术——jsp、servlet和javabean,构建了一个功能完备、操作简便的学报管理系统。 首先,我们来了解这三种技术的核心概念: 1. **JSP(JavaServer Pages)**:JSP是一种动态网页技术...

    学习JAVAWEB开发三大框架整理.pdf

    JavaWeb开发中的三大框架——Struts、Hibernate和Spring,是企业级应用开发的常用工具,它们各自承担着不同的职责,共同构建出高效、稳定的Web应用程序。以下是对这三大框架的详细解析。 1. **Struts框架** Struts...

    7个JSP小项目源代码和笔记资料汇总源码整理

    【标题】"7个JSP小项目源代码和笔记资料汇总源码整理"涉及的是Java Web开发中的一个重要技术——JSP(JavaServer Pages),它是一种动态网页开发技术,结合了HTML、JavaScript和Java代码,用于构建服务器端的交互式...

    最新面试题最新面试题

    Struts使用JSP作为视图层,Servlet作为控制器,以及一个持久化的模型层。 #### Struts框架中的XML配置文件 在Struts框架中,`struts-config.xml`文件扮演着非常重要的角色,它用于定义应用程序的行为和组件之间的...

    java高级面试框架整理

    ### Java高级面试框架知识点整理 #### Struts框架详解 **1. Struts框架的基本结构** - **MVC模式实现:** Struts是一个基于MVC(Model-View-Controller)模式的Web应用框架,其中Controller部分主要由一个Servlet...

    Javaweb--狂神版

    "狂神版"很可能指的是由某位知名讲师或专家整理的一套JavaWeb学习资源,这个压缩包可能包含了一个完整的JavaWeb项目实例——SMBMS。 SMBMS(Small and Medium Business Management System)可能是小型和中型企业...

    最新版Java视频学习路线图(内涵源码等获取方式)2.0(1).docx

    ### Java学习路线图知识点概述 ...以上就是根据提供的文档内容整理出的Java学习路线图的相关知识点。这些资源涵盖了从Java基础到高级框架的各个方面,非常适合Java初学者和希望提升技能的开发者参考学习。

    我的文件内容

    这可能意味着文件中包含的Oracle和JSP知识是针对特定应用场景——例如一个名为“egis_pis”的系统——进行的实践总结。 综合以上信息,这份压缩包文件是关于Oracle数据库管理与JSP开发的实战教程或个人学习记录。它...

    计算机毕业设计之jsp基于Java网上体育用品销售系统.zip

    《基于Java的网上体育用品销售系统——以JSP技术实现》 本文将深入探讨一个以Java为核心、JSP为前端展示技术的网上体育用品销售系统的设计与实现。这个项目不仅适用于计算机专业学生的毕业设计,也适合课程设计,...

    java技术题库

    以上是根据提供的题目内容整理出的相关知识点,涵盖了面向对象的基本概念、Java基础类型与容器类的使用、异常处理机制、Servlet的基础知识以及EJB的基本原理等方面。这些知识点对于准备Java面试和技术提升都非常有...

    基于J2EE框架的个人博客系统项目毕业设计论文(源码和论文)

    而越来越多专业知识的 Blog 的出现,让我们看到了 Blog 更多所蕴涵的巨大的信息价值:不同的 Blog 选择不同的内容,收集和整理成为很多人关注的专业 Blog ——目前越来越多的人获取信息的来源是一些固定的 Blog 。...

Global site tag (gtag.js) - Google Analytics