33、JAVA_WEB开发基础之会话机制

会话是什么

一个客户端浏览器与web服务器之间连续发生的一系列请求和响应过程就是会话,这些过程中产生的一系列信息就是会话信息,会话机制就是用于维护这些信息一致性的一种技术。通俗的说就是,一个A账号访问服务器,进行多次交互产生了一些信息,对于无状态Http协议来说,每来一次请求他都会处理一次,认为是一次新客户端的请求,所以他没有办法维护这些信息的一致性,所以便出现了会话这一概念,有了会话技术,就可以记录下A与服务器交互产生的信息。

如何实现

现在基本都是HTTP协议,而HTTP协议是没有状态的,所以无法记录多个请求下的一系列信息,所以就需要借助一些技术来维护服务器和浏览器之间的会话信息,这里有两种技术,分别是:Cookie和Session。

Cookie会话技术

cookie采用在客户端保持http状态信息的方案,通过将状态信息保存在客户端来保持会话状态。cookie是浏览器访问web服务器的某个资源时,由web服务器在http响应消息头中附带传送给浏览器的小文本文件。当发生交互时,web服务器通过在http相应消息中增加Set-Cookie响应头字段将Cookie信息发送给浏览器,浏览器则通过在http请求消息中增加Cookie请求头字段将Cookie回传给web服务器,使用cookie头字段来确认交互属于同一会话过程。

cookie的工作过程图示如下:

客户端一方会将cookie信息如何存储呢?这里说一下,cookie信息可以被存储在浏览器内存中,当关闭浏览器时,cookie就失效,这就是会话cookie;也可以通过设置将cookie信息存放在客户端主机的磁盘中,这就是持久化cookie。

cookie保持会话状态工作原理代码体现如下:

// 获取客户端的cookie
Cookie[] cookies = request.getCookies();
// 如果有cookie
if (cookies != null && cookies.length > 0) {for (Cookie c : cookies) {//获取cookie名String name = c.getName();//获取cookie值String value = c.getValue();if ("cookie_id_one".equals(name) && "123456".equals(value)) {//可以保持会话}}
}else{//客户端还没有cookie值,传回一个// 将cookie由服务器返回给客户端Cookie cookie = new Cookie("cookie_id_one", "123456");// 设置最大失效是时间是3600秒 ,若为负数则表示不存储这个cookiecookie.setMaxAge(3600);response.addCookie(cookie);
}

Session会话技术

session采用在服务器端保持http状态信息的方案,通过将状态信息保存在服务器端来保持会话状态。其工作原理大致为:服务器检查客户端传来的请求中是否包含一个sessio标识,如果已经包含,服务器就按照此sessioid检索出此用户信息,如果请求中不包含sessionid,服务器则创建一个sessionid并发送给客户端保存,使用JSESSIONID来表示。

session的工作原理图如下所示:

说一个概念,session cookie,他和上边的cookie不同,他指的是sessionid在客户端保存时的一个参数标记,服务器传送sessionid到客户端时,会创建一个JSESSIONID,它的值就是sessionid,JSESSIONID存储在session cookie中,session cookie存在于浏览器的内存中,所以当浏览器关闭时,session cookie就消失了,而服务器端的session对象不会消失。

java中使用HttpSession来表示session会话,他的基本方法如下:

//使用请求对象创建会话对象
HttpSession session = request.getSession();
//获取到sessionId
String sessionId = session.getId();
if (sessionId != null && sessionId != "") {//设置超时时间session.setMaxInactiveInterval(6000);//可以直接销毁此sessionid以结束此次会话session.invalidate();//获取sessionIDsession.getId();//等等
}

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/321678.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2017西安交大ACM小学期 刷墙[折半枚举+异或]

刷墙 发布时间: 2017年7月3日 12:17 最后更新: 2017年7月6日 22:29 时间限制: 3000ms 内存限制: 128M 描述 小明有一面黑白混搭的墙,他想给把墙重新粉刷一遍。他将任务分给了xx粉刷匠,但是xx粉刷匠提出要求,他要根据原来墙的颜色进行粉…

jzoj4216-[NOIP2015模拟9.12]平方和【Splay】

正题 题目链接:https://jzoj.net/senior/#main/show/4216 题目大意 一个序列要求支持操作 插入一个数区间加上一个数区间求平方和 解题思路 用线段树可以做到区间求平方和。 就是(ab)2a22abb2(ab)^2a^22abb^2(ab)2a22abb2也就是维护区间和平方和和区间个数即可。 但是因为…

34、JAVA_WEB开发基础之EL表达式和标签

EL表达式是什么 一种从域对象中获取数值的简化写法,el表达式语法格式为:${域对象.参数名} 使用方式 取出request范围内的参数:{pageContext.request.username} 或者是 ${requestScope.username} 取出session范围内的参数:{pag…

2017西安交大ACM小学期 选择困难症[折半枚举+二分查找]

选择困难症 发布时间: 2017年7月4日 12:44 最后更新: 2017年7月4日 12:45 时间限制: 5000ms 内存限制: 128M 描述 GG有严重的选择困难症。 早上起床后,需要花很长时间决定今天穿什么出门。 假设一共有k类物品需要搭配选择,每类物品的个数为Ai&…

jzoj3798-[NOIP2014模拟8.22]临洮巨人【前缀和】

正题 题目链接:https://jzoj.net/senior/#main/show/3798 题目大意 长度为nnn的字符串,求有多少个子串中ABCABCABC数量相等。 解题思路 方法好像很巧妙,用Si,A/B/CS_{i,A/B/C}Si,A/B/C​表示到第iii个时A/B/CA/B/CA/B/C的数量。 然后Sr,A−Sl,ASr,B−…

35、JAVA_WEB开发基础之过滤器

是什么 过滤器javaweb的一个重要组件,一种规范,可以对发送到serlvet的请求进行拦截和响应进行过滤。实际开发中可以使用过滤器来对访问服务器的请求进行过滤,以提高安全性 过滤器的原理 可以配置过滤器对指定的请求进行过滤,就…

2017西安交大ACM小学期 毁灭序列[倒跑并查集]

毁灭序列 发布时间: 2017年7月4日 20:58 最后更新: 2017年7月6日 22:23 时间限制: 1000ms 内存限制: 512M 描述 给出一个n(1≤n≤2105)个非负整数a1,a2,...,an的序列,你要按一定顺序毁灭序列的中的数,在每次毁灭一个数后,输出不包括已毁…

P4036-[JSOI2008]火星人【Splay,二分,hash】

正题 题目链接:https://www.luogu.com.cn/problem/P4036 题目大意 一个字符串要求支持 插入一个字符修改一个字符询问两个后缀的最长公共前缀。 解题思路 如果不考虑修改我们可以用二分hashhashhash解决该问题,但是涉及到修改和插入我们考虑用SplaySplaySplay维…

36、JAVA_WEB开发基础之监听器

是什么 顾名思义就是监听器就是监听器,在开发中指的是一种机制,通过这种机制可以对应用中组件的创建、销毁、更改等动作进行监视,根据具体监听信息作出相应的处理 工作原理 就是预先给组件添加一个事件,当这个组件被操作&#…

2017西安交大ACM小学期 神器插座 KMP匹配

神奇插座 发布时间: 2017年7月3日 11:27 最后更新: 2017年7月5日 13:46 时间限制: 500ms 内存限制: 128M 描述 AA所在的国家有一项神奇的发明:插座。这里的插座不仅有两孔、三孔,而是有多种形态,下面用不同的小写字母表示不同的插座。插…

jzoj3626-[LNOI2014]LCA【树链剖分,线段树】

正题 题目链接:https://www.lydsy.com/JudgeOnline/problem.php?id3626 题目大意 一棵树,每次给出(l,r,z)(l,r,z)(l,r,z)询问∑ilrdepLCA(i,z)\sum_{il}^rdep_{LCA(i,z)}il∑r​depLCA(i,z)​ 解题思路 若询问LCA(x,y)LCA(x,y)LCA(x,y)的深度有一种方法&#xf…

37、JAVA_WEB开发基础之上传功能

是什么 上传指的是将客户端的文件保存到服务器的磁盘中 基本实现原理 读取客户端的文件信息,将文件信息以流的形式发送到服务器,然后服务器将流中的信息保存到本地,以实现文件的上传 实例 注意:提交的表单类型一定是 enctype…

2017西安交大ACM小学期 文本查找[AC自动机]

文本查找 发布时间: 2017年7月5日 00:10 最后更新: 2017年7月5日 13:47 时间限制: 1500ms 内存限制: 128M 描述 给定m种两两不同的关键词,并给定一段文本,问这段文本中有几种关键词出现(一种关键词出现多次只算一次)。 输入…

P4296-[AHOI2007]密码箱【数论】

正题 题目链接:https://www.luogu.com.cn/problem/P4296 题目大意 一个数字nnn&#xff0c;求有多少个x<nx<nx<n使得x2%n1x^2\%n1x2%n1。 解题思路 x2kn1x^2kn1x2kn1 x2−1knx^2-1knx2−1kn (x−1)(x1)%n0(x-1)(x1)\%n0(x−1)(x1)%n0 ⇒\Rightarrow⇒ x(x2)%n0(x2&l…

38、JAVA_WEB开发基础之下载功能

是什么 下载指的是将服务器端的文件保存到客户端的磁盘中 基本实现原理 根据对应的要下载的文件在服务器端找到对应的文件&#xff0c;然后获取到文件流对象&#xff0c;将流对象发送到客户端&#xff0c;然后客户端通过对返回结果中文件流的解析&#xff0c;将流对象转换成…

2017西安交大ACM小学期 有趣异或[Trie树]

有趣异或 发布时间: 2017年7月4日 23:59 最后更新: 2017年7月5日 14:56 时间限制: 1500ms 内存限制: 512M 描述 给定n个非负整数&#xff0c;保证这些数两两不相同。现给定x&#xff0c;请从中选2个不同的数a,b&#xff0c;使得a^b^x最大。 输入 包含多组测试数据。 每组…

P5675-[GZOI2017]取石子游戏【博弈论,dp】

正题 题目链接:https://www.luogu.com.cn/problem/P5675 题目大意 nnn堆石子&#xff0c;第iii堆有aia_iai​个。指定一些石子堆使得先手必胜并指定一个先手第一个取的位置使得先手必败&#xff0c;求有多少方案数。 解题思路 根据NIMNIMNIM游戏&#xff0c;只要石子数异或和…

39、JAVA_WEB开发基础之ajax和json

ajax是什么 首先要知道ajax并不是一种新的技术&#xff0c;而是几种技术的强强联合&#xff0c;全称是Asynchronous Javascript and xml&#xff0c;其精髓在于异步加载资源&#xff0c;因此可以实现局部加载效果&#xff08;因为可以异步加载&#xff0c;所以不需要依靠整张页…

(不误正业)鼓励做题的时间陷阱

前言 在家闲的无聊想着没人陪我做题就写了一个可以(或许)鼓励做题的东西 正题 关于时间陷阱 时间陷阱是种游戏类型&#xff0c;玩家开始时有一个倒计时&#xff0c;没完成一个任务会增加倒计时&#xff0c;时间到了那么任务就输了。 这里编写的时间陷阱任务重要度(完成后加的…

2017西安交大ACM小学期 美妙音乐[差分KMP匹配]

美妙音乐 发布时间: 2017年7月3日 13:14 最后更新: 2017年7月5日 13:47 时间限制: 500ms 内存限制: 128M 描述 一段音乐是由若干个音符组成的&#xff0c;音乐中的某段音符称为旋律。给定一首音乐&#xff0c;问某个旋律出现了多少次。注意&#xff1a; &#xff08;1&am…