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的存活时间(单位/分钟)

<?xml version="1.0" encoding="UTF-8"?>




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的路径下:
在这里插入图片描述

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐