JavaWeb会话技术之Session

一 概述

当浏览器第一次给服务器发送请求时会建立一次会话,直到一方断开为止,一次会话一般包含多次请求和响应。主要作用是保证在这次会话的范围内实现数据的共享。

实现的方式有:1.客户端会话:Cookie;2. 服务端会话:Session;

二 会话之服务端会话——Session

session为服务端会话技术,在一次会话的多次请求之间共享数据,将数据保存在服务器端的HttpSession对象中。

服务端会话的实现:

获取HttpSession对象

public class SessionAccept extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {

        //1.获取session
        HttpSession session = request.getSession();

        //2.存储数据
        session.setAttribute("msg","hello session");
    }
}

使用HttpSession对象,主要是通过HttpSession对象使用以下方法:

    1. Object getAttribute(String name)  
            2. void setAttribute(String name, Object value)
            3. void removeAttribute(String name)  

Session的实现是依赖于cookie的,具体的实现如图所示:

第一次请求的响应头的set-cookie信息:

第二次请求的请求头的cookie信息:

Session的细节问题:

1. 当我们的客户端关闭后,服务器不关闭,两次获取的session在默认情况下不是同一个,如果要保证是同一个,我们可以创建Cookie,键为JSESSIONID,设置最大存活时间,让cookie持久化保存。

Cookie cookie = new Cookie("JSESSIONID",session.getId());
cookie.setMaxAge(60*60);
response.addCookie(cookie);

2. 当客户端不关闭,服务器关闭后,两次获取的session是不同的,但是为了确保数据不会丢失,tomcat会自动是实现session的钝化(在服务器正常关闭之前,将session对象序列化到硬盘上,进行持久化保存)和session的活化(在服务器启动后,将session文件转化为内存中的session对象)。

3. session的不同销毁时间

 (1) 服务器关闭时

 (2)session对象调用invalidate()方法时。

 (3)tomcat中的session默认失效时间为30分钟,我们可以对其进行修改。

<session-config>
		<session-timeout>30</session-timeout>
</session-config>

Session的特点:

   1. session用于存储一次会话的多次请求的数据,在服务器端保存,所以session中的数据比Cookie中数据的安全。

   2. session可以存储任意类型,因为sesssion使用的是setAttribute(String name, Object value)方法,值value的类型为Object,任意大小的数据,但是Cookie的数据大小和数据类型是受到限制的。(Cookie默认为String类型数据,因为构造方法使用的是Cookie(String name, String value))。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值