`
haoran_10
  • 浏览: 444284 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java servlet拾遗(4)-会话

阅读更多
一、什么是HTTP会话
    web领域的会话也称作HTTP会话,而实际上http是无状态的,http协议也没有制定会话协议。会话机制则是根据跟踪客户状态的一种解决方案,可以使用ASP,PHP,JSP等等,而实际上这些语言实现的方式,才叫HTTP会话。
 
二、解决方案
    http会话是基于cookie,cookie则是在浏览器端(客户端)存储一些时间短、信息量少的数据,可以存在服务端也可以不存在服务端。
而http会话,则是在客户端和服务端都存在一组对应的数据,这时当浏览器发送请求时,带上这些数据(比如sessionid),服务端则可以识别出是上次请求存储的用户是那一个。 
流程如下:
1.客户端第一次请求数据到服务端(如Servlet容器),服务端返回一组会话标识(如sessionid),并且Servlet容器存储这个sessionid到服务器内,并且对应一个用户,如tom
2.客户端第二次带上会话标识(sessionid),这时服务端(Servlet容器)根据sessionid查找用户,发现是tom,认为这个请求是tom发起的,这就是会话,有了上次的状态
3.tom要离开这个应用,退出请求,即清除会话请求,此时客户端删除sessionid,服务端也删除对应的sessionid,此时会话结束
 
三、Servlet规范是怎么做的
    javax.servlet.http.HttpSession接口,主要包括了设置客户端和服务端共享的数据,设置会话的超时时间,以及一些基础方法定义。
Servlet容器只要实现这些方法,就可以实现和客户端的会话。
javax.servlet.http.HttpServletRequest 客户端请求接口封装了 javax.servlet.http.HttpSession接口的获取方法。
 
四、会话持久化
默认的Servlet容器会存储在,即持久化在内存中。
但是会有下面的问题:
(1)、当客户端会话过多时,服务器内存不足,系统性能下降,甚至崩溃
(2)、如果应用重启时,比如Servlet容器重启,那么内存的数据也不存在,这时用户感觉很困惑,还没退出请求,会话就结束了
 
有下面几种解决方案:
(1)、把会话信息存储在文件中。适合小型的应用,不需要分布式,单机即可支撑,但是如果涉及到多个服务器共同承载负债均衡时,会话信息难以共享
(2)、数据库中。可以解决共享问题,但是每次都要访问数据库,性能太差。
(3)、外置内存系统中,比如memcache,redis,这样才能保证既能共享会话,性能又很优越。
 
0
1
分享到:
评论

相关推荐

    javax.servlet-api-4.0.1.jar

    总结起来,`javax.servlet-api-4.0.1.jar`是构建基于Java的Web应用不可或缺的一部分,它提供了丰富的API来处理HTTP请求、响应、会话以及其他的Web交互。对于JSP自定义标签,这个库提供了坚实的基础设施,使得开发者...

    javax.servlet-api-3.1.0.jar

    javax.servlet-api-3.1.0.jar,处理找不到servlet JAR的问题

    thrift 生成的java包servlet-api-2.5.jar

    thrift 生成的java包servlet-api-2.5.jar

    java\Servlet技术--小例子.pdf

    <servlet-class>test1.HelloServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>Hello</servlet-name> <url-pattern>/test1/*</url-pattern> </servlet-mapping> </web-app> ``` - **...

    servlet-api-3.0.jar包

    Servlet-api-3.0.jar是Java Servlet API的第三版实现,它是开发Web应用程序的重要组成部分,特别是在基于Java的服务器端编程中。这个库包含了用于创建和管理HTTP服务端点的接口和类,允许开发者构建动态、交互式的...

    javax.servlet jar包---解决找不到javax.servlet.*等问题

    4. **如何引入javax.servlet.jar** - 在传统的Java Web项目中,通常将`javax.servlet.jar`和`javax.servlet.jsp.jar`添加到项目的类路径中,这可以通过在`WEB-INF/lib`目录下放置这两个jar包实现。 - 使用Maven或...

    jakarta-servletapi-4-src.zip servlet源码

    本篇文章将围绕jakarta-servletapi-4-src.zip这个源码包,深入剖析Servlet API 4.0的关键特性与实现原理。 一、Servlet接口与生命周期 Servlet接口是所有Servlet的基础,它定义了Servlet的主要方法,如`init()`, `...

    java-servlet物流管理-成功.zip

    4. **JSP(JavaServer Pages)** JSP是Java Servlet的一种简化形式,用于创建动态Web页面。在物流系统中,JSP可以用来生成物流追踪页面,其中包含了HTML、CSS和嵌入的Java代码。Servlet处理请求后,可以通过...

    servlet -api-4.0.1

    Java Servlet-API最新SDK。下载之前,找了好久才找到,需要的人拿走

    javax.servlet---jsp-api jar包

    5. **版本升级与兼容性**: 随着Java EE版本的升级,Servlet和JSP API也有相应的更新,如Servlet 2.x, 3.x, 4.x等,每个新版本通常会引入新的特性和性能优化,并保持向后兼容。开发者需要根据项目需求选择合适的API...

    servlet-api-3.0-alpha-1.jar

    javaweb/javaEE常用jar包,亲测可用,导入到java工程中使用

    基于java--jsp--servlet--tomcat--sqlserver的社区医疗管理系统

    《基于Java-JSP-Servlet-Tomcat-SQLServer的社区医疗管理系统详解》 社区医疗管理系统是一种信息化解决方案,它旨在提高医疗服务的效率和质量,优化资源配置,满足城市社区居民的医疗需求。本文将深入探讨该系统的...

    servlet-api-2.3.jar

    servlet-api-2.3.jar servlet-api-2.3.jar

    servlet源码 servlet-api-src javax.servlet.Servlet源码

    总的来说,理解和研究`servlet-api-src`中的`javax.servlet.Servlet`源码对于任何Java Web开发者来说都是一个重要的学习步骤。它不仅可以帮助我们深入理解Servlet的工作原理,还可以提升我们在实际项目中的开发效率...

    Java之servlet2 -- codes

    在Java Web开发中,Servlet是一种Java编程语言编写的服务器端程序,主要功能在于交互式地浏览和修改数据,处理来自客户端(通常是Web浏览器)的请求,并返回适当的响应。本篇文章将深入探讨`Servlet2`的相关知识,...

    javax.servlet-api.jar.zip

    文件中包含javax.servlet-api-3.0.1.jar,javax.servlet-api-3.1.0.jar,javax.servlet-api-4.0.0.jar,用来处理java项目运行中找不到servlet JAR的问题,需要的朋友可以下载

    servlet-api-3.0.jar

    servlet-api-3.0.jar ,servlet API工具包

    sipservlet-1.0-fcs

    4. **服务扩展性**:sipservlet-1.0-fcs设计为可扩展,允许开发人员添加自定义的SIP处理逻辑,同时保持与标准的兼容性。这使得开发者能够根据特定需求定制服务,而不会影响整体架构的稳定性。 5. **安全性**:在...

    servlet-api-2.4.jar (亲测可用)

    总的来说,servlet-api-2.4.jar是开发和部署Java Web应用的关键依赖,它提供了Servlet和JSP所需的所有核心接口和类。使用这个jar包,开发者可以编写与Servlet容器兼容的代码,确保应用能在各种环境中正常运行。在...

Global site tag (gtag.js) - Google Analytics