session概述 - 【cookie和session篇】
session概述 - 【cookie和session篇】置顶 GF_浪夏一学 2020-09-13 15:43:28753收藏 2分类专栏: 每日学习 文章标签: session java tomcat cookie servlet版权Session概述Session是服务器为每个访问这个服务器的客户端用户创建的一个容器。这个容器中存储的数据能够在多个request之间实现共享。而且,这个容器只
session概述 - 【cookie和session篇】
置顶 GF_浪夏一学 2020-09-13 15:43:28 753 收藏 2
分类专栏: 每日学习 文章标签: session java tomcat cookie servlet
版权
Session概述
Session是服务器为每个访问这个服务器的客户端用户创建的一个容器。这个容器中存储的数据能够在多个request之间实现共享。而且,这个容器只属于当前这个用户,有一个唯一的id。
Session技术就是在服务端存取会话的数据
session的特点
每个session有id,存取key-value
数据有存活时间
每个Session的JESSIONID不同,使每个浏览器访问自己的数据不受他人影响
session图解在这里插入图片描述
Session存取数据
获取Session
HttpSession request.getSession() 获取session对象,有session对象就返回创建的session,没有session就创建session对象
存数据
setAttribute(key,value)
读数据
getAttribute(key)
或缺session的id
String session.getId()
session的销毁
时间超出了session的存活时间自动销毁
session的默认存活时间是30分钟,可以通过在tomcat的全局配置文件web.xml中(tomcat/config/web.xml)中设置session的存活时间(单位/分钟)
60
1
2
3
4
5
6
7
8
9
10
11
在servlet中调用**session.invalidate()**方法来销毁session
session持久化
当浏览器关闭后,JSESSIONID就消失了,再次访问的时候又会重新创建了一个新的session对象。这样操作会比较消耗资源,所以我们需要实现session的持久化,下次使用直接从浏览器获取以前的JSESSIONID,而不创建新的session。
浏览器关闭后JESSIONID这个cookie消失了。再次访问的时候,就不能够在识别这个session了。
session的持久化的方法:
通过将session的JSESSIONID保存到cookie中,设置存活期,下次访问直接带给服务器。
就是能够在较长的时间内,能够通过JSESSIONID识别session,下次再访问就不用创建session,通过将JSESSIONID保存到cookie中,社遏制存活日期,下次访问的时候,直接将cookie带给服务器,获取JSESSIONID,得到session对象。
案例实现:
WebServlet("/JSESSIONID_Cookie")
public class JSESSIONID_CookieServlet extends HttpServlet {
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//实现持久化session
HttpSession session = request.getSession();
//获取sessionid
String id = session.getId();
//这里注意,这个key一定要是JSESSIONID
Cookie cookie = new Cookie("JSESSIONID",id);
//设置cookie存活时间,将JSESSIONID存入cookie
cookie.setMaxAge(60*30);
//响应回浏览器
response.addCookie(cookie);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
tomcat 中关闭服务会自动把session持久化 (存储在work目录下的一个session.ser),下次访问服务器直接从这个文件读取
Session的钝化与活化(tomcat持久化session)
钝化:tomcat 中正常关闭服务会自动把session持久化(保存在tomcat文件夹的work目录下的serssion.ser文件)
活化:与钝化相反,再次启动tomcat服务器的时候会将保存的session读取给服务器。
在这里插入图片描述
work目录在idea发布的Using CATALINA_BASE的路径下:
在这里插入图片描述
更多推荐
所有评论(0)