1.ServletContext接口
它有一个属性 arrtibute-currentHashmap。
使用规则:可以被当前网站中所有的Servlet使用
生命周期:在http服务器启动时就会创建一个实现类对象,并且规定在运行时必须有且只能有一个实现类对象。在服务器将要关闭时,就会销毁它。
别名叫全局作用域对象。
使用方法:
先提供请求对象request索要全局作用域对象,再将共享数据存储在共享平台中,它相当于一个共享平台的管理员。再另一个Servlet索要全局作用域对象,得到平台存放的数据,以此来实现数据共享。
优缺点:优点是可以被当前网站所有的Servlet对象来访问数据,但是因为map会自动扩容,所以会越来越占内存,数据也不安全,不建议使用,
2.httpServletRequest(推荐使用的) 请求对象/作用域对象
使用规则:处于同一次请求中转发过程中的servlet可以使用来实现数据共享
原理:请求转发。 request.getDidpatcher(“/aaa.html”).forward(request,response)
生命周期:在本次请求结束后就会被销毁
优缺点:占用内存小,不易发生数据感染,存在事件也较短。
3.cookie
类似于用户的会员卡,在每次请求结束后,会把cookie放在相应包中的响应头中存到浏览器的内存中,页可以设置存在硬盘中,且可以设置事件。
要注意cookie中的key和vaklue只能是字符串。
使用规则:只要是先后为同一个用户同一个浏览器服务的servlet就可以借助cookie实现数据共享
4.HttpSession接口(会话作用域对象)
arrtibute-concurrentHashmap
使用规则:只有为用户服务过的Servlet才有资格使用,当前用户的私人储物柜实现数据共享。
推送过程中不会显示cookie中的具体数据,显示(JSESession ,编号)这样就提高了安全性。
令牌机制也是用它完成的。
生命周期:默认情况下JSESession 是存在浏览器的内存中的,每创建一个session对象就会设置一个最大空闲时间,从使用完成开始计时,为30min。超过这个事件以后才会销毁