session技术原理浅析

本文深入探讨了会话技术和Session技术的工作原理及应用。详细介绍了如何通过cookie技术实现客户端状态保持,以及Session如何借助cookie存储JSESSIONID来维持服务器端的会话状态。此外,还讨论了JSESSIONID与Session的生命周期及其配置方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

会话技术:
        cookie技术:存到客户端
            发送cookie:
                Cookie cookie=new Cookie(name,value);
                cookie.setMaxAge(秒数);
                cookie.setPath();
                response.addCookie(cookie);
            获得Cookie:
                Cookie[] cookies=request.getCookies();
                cookie.getName();
                cookie.getValue();
        Session技术:存到服务器端,借助cookie存储JSESSIONID
            HttpSession session=request.getSession();
            setAttribute(name,value);
            getAttribute(name);
            
            Session生命周期
                创建:第一次指定request.getSession();
                销毁:服务器关闭、session失效/过期、手动session.invalidate();

                session作用范围:默认一会话中

        session技术概述:当浏览器访问的资源会在服务器端执行getSession()语句时,例如我们自己写的SessionServlet或者任何.jsp文件(因为.jsp文件被翻译后的.java文件中含有session = pageContext.getSession();语句),都会自动在响应头中(response)中添加Set-Cookie: JSESSIONID=E7FEAA0A85A984A8E28CCB04C31A70E2; Path=/WEB16; HttpOnly 语句,用来给之后访问同一web下的所有资源时,都带有JSESSIONID。

        JSESSIONID是用来访问session域的,那么session域在服务器端默认存活时间是多久呢?

     30分钟(从不操作服务器端的资源开始计时)!这个默认时间也可以从web.xml中修改<session-config><session-timeout>30</session-timeout></session-config> 来设定成想要的默认值。或者不使用默认值来使用session.setMaxInactiveInterval(间隔)更改或者说是设定session在服务器端的存活时间。

         那么另一方面,JSESSIONID的存活时间是多少呢

         从上面Set-Cookie中的内容可知,自动化的set-cookie并没有设置cookie持久化时间,只是设置了cookie的的携带路径,故JSESSIONID的存活时间就是默认时间,即到从打开会话到浏览器关闭为止。要想更改这一时间可以自行设定Cookie cookie=new Cookie("JSESSIONID",session.getId());cookie.setMaxAge(300);response.addCookie(cookie);但这样并不会覆盖自动的Set-Cookie所以在响应头中会看到两条JSESSIONID,打开同一web资源下其他页面请求头中也会带有两条相同的JSESSIONID信息,但在浏览器关闭后再重新打开去访问同一web工程下的资源就会发现cookie中就只含有我们自己手动设定的JSESSIONID信息了。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值