一、什么是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,这样才能保证既能共享会话,性能又很优越。
相关推荐
java-servlet-连接mysql-数据库.docx java-servlet-连接mysql-数据库.docx java-servlet-连接mysql-数据库.docx java-servlet-连接mysql-数据库.docx java-servlet-连接mysql-数据库.docx java-servlet-连接mysql-...
javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...
javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...
赠送jar包:jakarta.servlet-api-4.0.4.jar; 赠送原API文档:jakarta.servlet-api-4.0.4-javadoc.jar; 赠送源代码:jakarta.servlet-api-4.0.4-sources.jar; 赠送Maven依赖信息文件:jakarta.servlet-api-4.0.4....
赠送jar包:javax.servlet-api-4.0.0.jar; 赠送原API文档:javax.servlet-api-4.0.0-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.0-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.0.pom; ...
赠送jar包:javax.servlet-api-4.0.1.jar; 赠送原API文档:javax.servlet-api-4.0.1-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.1-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.1.pom; ...
javax.servlet-api-3.1.0.jar,处理找不到servlet JAR的问题
赠送jar包:sentinel-web-servlet-1.8.0.jar; 赠送原API文档:sentinel-web-servlet-1.8.0-javadoc.jar; 赠送源代码:sentinel-web-servlet-1.8.0-sources.jar; 赠送Maven依赖信息文件:sentinel-web-servlet-...
java\Servlet技术--小例子.pdf,利用java设计serverlet程序
赠送jar包:javax.servlet-api-4.0.0.jar; 赠送原API文档:javax.servlet-api-4.0.0-javadoc.jar; 赠送源代码:javax.servlet-api-4.0.0-sources.jar; 赠送Maven依赖信息文件:javax.servlet-api-4.0.0.pom; ...
thrift 生成的java包servlet-api-2.5.jar
javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...
JAVA实战项目源码-计算机毕业设计java专业-JJavaBean-Servlet-jsp-网上购物系统 本系统在Windows 操作系统环境下,用Java作为开发工具,实现的主要功能有:图书类别信息,图书信息,留言板,后台管理等功能。本文...
赠送jar包:jakarta.servlet-api-4.0.4.jar; 赠送原API文档:jakarta.servlet-api-4.0.4-javadoc.jar; 赠送源代码:jakarta.servlet-api-4.0.4-sources.jar; 赠送Maven依赖信息文件:jakarta.servlet-api-4.0.4....
赠送jar包:jersey-container-servlet-core-2.22.2.jar; 赠送原API文档:jersey-container-servlet-core-2.22.2-javadoc.jar; 赠送源代码:jersey-container-servlet-core-2.22.2-sources.jar; 赠送Maven依赖信息...
javax.servlet.jsp-api-2.3.1.jar
javax.servlet-api-***.jar中文文档.zip,java,javax.servlet-api-***.jar,javax.servlet,javax.servlet-api,***,jar包,Maven,第三方jar包,组件,开源组件,第三方组件,Gradle,javax,servlet,api,中文API文档,手册,开发...
servlet-api-3.0.jar
jsp自定义标签需要的jar包