会话技术Session快速入门和Session原理分析
会话技术Session快速入门
1.概念:服务器端会话技术,在一次会话的多次请求间共享数据,将数据保存在服务器端的对象中。HTTPSession
2.快速入门:
1.获取HTTPSession对象:
HTTPSession session = request.getSession();
2.使用HTTPSession对象:
Object getAttribute(String name)
void setAttribute(String name,Object value)
void removeAttribute(String name)
Session1:
@WebServlet("/sessionD1") public class SessionD1 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //使用Session共享数据 //获取session HttpSession session = request.getSession(); //存储数据 session.setAttribute("msg","hello Session"); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
Session2
@WebServlet("/sessionD2") public class SessionD2 extends HttpServlet { protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { //使用Session获取数据 //获取Session HttpSession session = request.getSession(); //获取数据 Object msg = session.getAttribute("msg"); System.out.println(msg); } protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { this.doPost(request, response); } }
控制台打印结果:
把浏览器进行关闭在进行获取获取不到了就
Session原理分析
Session的实现是依赖于Cookie的
1、当客户端第一次请求会话对象时,服务器会创建一个 Session 对象,并为该 Session 对象分配一个唯一的 SessionID (用来标识这个 Session 对象);
2、服务器将 SessionID 以 Cookie(Cookie 名称为:“ JSESSIONID ”,值为 SessionID 的值,如 Set-Cookie:JESSIONID=10 )的形式发送给客户端浏览器;
3、客户端浏览器再次发送 HTTP 请求时,会将携带 SessionID 的 Cookie (如 cookie: JESSIONID=10 )随请求一起发送给服务器;
4、服务器从请求中读取 SessionID,然后根据 SessionID 找到对应的 Session 对象。
在 同一次会话中 ,多次请求获取的是 同一个Session对象
注意:
流程中的 Cookie 是容器自动生成的,它的 maxAge 属性取值为 -1,表示仅当前浏览器有效。
浏览器关闭时,对应的 Session 并没有失效,但此时与此 Session 对应的 Cookie 已失效,导致浏览器无法再通过 Cookie 获取服务器端的 Session 对象。
同一浏览器的不同窗口共享同一 Session 对象,但不同浏览器窗口之间不能共享 Session 对象。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix