目录
Session介绍
Session原理
【cookie|一文了解Session】 Session使用细节
Session钝化、活化
Session销毁:
Session介绍 服务端会话跟踪技术:将数据保存到服务端
JavaEE提供HttpSession接口,来实现一次会话的多次请求间数据共享功能
使用:
1、获取Session对象
HttpSession session=request.getSession();
2、Session对象功能
void setAttribute(String name,Object o);
//存储数据到session域中
Object getAttribute(String name);
//根据key获取value值
void removeAttribute(String name);
//根据key,删除键值对
文章图片
创建两个类SessionServlet和SessionServlet1
package com;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import java.io.IOException;
public class SessionServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//存储到session中
//1、获取session对象
HttpSession session=req.getSession();
//存储数据
session.setAttribute("username","root");
}
}
public class SessionServlet1 extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
//获取数据。从session中
//1获取session对象
HttpSession session=req.getSession();
//获取数据
Object username=session.getAttribute("username");
System.out.println("获取到的session值为"+username);
}
web.xml配置两个类的访问地址
SessionServlet1
com.SessionServlet1SessionServlet1
/sessionServlet1 SessionServlet
com.SessionServletSessionServlet
/sessionServlet
先访问①后访问②运行得
文章图片
Session原理 Session是基于Cookie实现的
获取的对象有唯一的标识id的,tomcat把session的id当成cookie发送给浏览器,tomcat在响应是会加上set-cookie这个响应头JSESSIONID=值存储到浏览器内存中,第二次获取时就会去内存中寻找有无id为之前的,有就直接用那数据,没有就创建
文章图片
Session使用细节 Session钝化、活化
服务器重启,Session中的数据还会存在?
钝化:在服务器正常关闭后,Tomcat会自动将Session数据写入硬盘文件中
活化:在次启动服务器后,从文件中加载数据到Session中Session销毁:
①默认情况下,无操作30分钟后自动销毁(下列单位分钟)
30
②调用Session对象的invalidate()方法浏览器一关,session就销毁了,因为session是通过cookie传输
小结
Cookie和Session都是来完成一次会话内多次请求间数据共享的区别:
存储位置:Cookie是将数据存储在客户端,Session将数据储存在服务器
安全性:Cookie不安全,Session安全
数据大小:Cookie最大3KB,Session无大小限制
存储时间:Cookie可以长期存储,Session默认30分钟
服务器性能:Cookie不占服务器资源,Session占用服务器资源
推荐阅读
- JSP|两万字速通JSP
- Redis|面试官(熟悉Redis,那聊聊Redis主从复制(我画了13张图讲明白了))
- 《我们一起去大厂》系列|面试官看我简历写精通redis,让我聊聊sds是什么()
- 大学学习记录|windows同时安装jdk8和jdk11
- leetcode|集合和数组互转,list,array
- 数据结构与算法|【Java数据结构】哈希表详解
- 哈希表|哈希表2--Hashmap的实现详解
- Android|Android全面解析之由浅及深Handler消息机制
- 数据库|Redis——作为sql数据库缓存