四种方式实现数据共享

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。超过这个事件以后才会销毁   

    原文作者:Lhy.721
    原文地址: https://blog.csdn.net/weixin_66118898/article/details/122310360
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞