文档章节

java servlet拾遗(4)-会话

haoran_10
 haoran_10
发布于 2016/07/15 16:39
字数 703
阅读 11
收藏 1

一、什么是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,这样才能保证既能共享会话,性能又很优越。

 

© 著作权归作者所有

共有 人打赏支持
haoran_10
粉丝 25
博文 88
码字总数 80846
作品 0
杭州
程序员
servlet/jsp基础复习

servlet就是一个普通的Java类,类对象由服务器(容器)创建,实现请求,响应交互数据。 实现第一个servlet继承HTTPservlet重写doget,dopost方法。其实servlet执行处理请求时候都会调用父类s...

hello_hp
2017/10/20
0
0
Java EE部分核心技术简介

EJB — JavaEE的基石: 1、 EJB (Enterprise JavaBeans) : 一个Java服务器端组件开发的规范,定义了一个用来开发面向对象分布式应用组件的标准方法,软件厂商根据它来实现EJB服务器。 Java...

顶层设计
2012/08/03
0
0
Servlet技术过时了吗?看了这个就会明白

Servlet 是Java Servlet的简称,是一种服务连接器,也是Java语言实现的一个借口类。支持Java的应用服务器都可以实现。Servlet可以相应任何类型的请求,至今在服务器开发领域仍然有比较广泛的...

小欣妹妹
2017/11/03
0
0
如何成为一个优秀的JSP程序员

一个普通的错误是把JSP当作简化的Java,它不是,(事实上, JSP是简化的Servlet)程序员通常试着没有学习要求的支持技巧而直接学习JSP。JSP是一个衔接技术,并且成功地连接你需要理解的另外的...

五味格子
2011/05/11
0
0
读书《Servlet与JSP核心编程》

读书《Servlet与JSP核心编程》 Servlet和JSP技术概述 HelloServlet HttpServlet Servlet逻辑,面向处理 JSP表示,面向表示 Servlet和JSP结合起来 服务器的安装和配置 Servlet基础 web.xml in...

放个屁
2015/05/04
0
0

没有更多内容

加载失败,请刷新页面

加载更多

20180920 rzsz传输文件、用户和用户组相关配置文件与管理

利用rz、sz实现Linux与Windows互传文件 [root@centos01 ~]# yum install -y lrzsz # 安装工具sz test.txt # 弹出对话框,传递到选择的路径下rz # 回车后,会从对话框中选择对应的文件传递...

野雪球
今天
0
0
OSChina 周四乱弹 —— 毒蛇当辣条

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @ 达尔文:分享花澤香菜/前野智昭/小野大輔/井上喜久子的单曲《ミッション! 健?康?第?イチ》 《ミッション! 健?康?第?イチ》- 花澤香菜/前野智...

小小编辑
今天
6
2
java -jar运行内存设置

java -Xms64m #JVM启动时的初始堆大小 -Xmx128m #最大堆大小 -Xmn64m #年轻代的大小,其余的空间是老年代 -XX:MaxMetaspaceSize=128m # -XX:CompressedClassSpaceSize=6...

李玉长
今天
1
0
Spring | 手把手教你SSM最优雅的整合方式

HEY 本节主要内容为:基于Spring从0到1搭建一个web工程,适合初学者,Java初级开发者。欢迎与我交流。 MODULE 新建一个Maven工程。 不论你是什么工具,选这个就可以了,然后next,直至finis...

冯文议
今天
1
0
RxJS的另外四种实现方式(四)——性能最高的库(续)

接上一篇RxJS的另外四种实现方式(三)——性能最高的库 上一篇文章我展示了这个最高性能库的实现方法。下面我介绍一下这个性能提升的秘密。 首先,为了弄清楚Most库究竟为何如此快,我必须借...

一个灰
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部