前言
在学 Javaweb 的时候,我们就一直被强调 javaweb 中有四大作用域:pageContext域,request域,session域和 application域。
- pageContext域里的变量只能在当前页面使用。
- request域中对象的有效范围是当前的请求范围。
- session域中对象的有效范围是当前的会话范围。
- application域中对象的有效范围是整个应用活跃的范围。
了解基本概念后,综上我们可以得出若要进行网络通信,我们一般都要使用到 request 和 session。由于 request 的作用域只是在请求范围内有效,每次请求后数据就会自动销毁。但有时候我们有想要存储一些能够存储久的数据,例如登录信息,用户信息等,request域是做不到的。
服务端的 session 和 客户端(浏览器)的 cookie 的性质很相似,例如他们都能存储一定期限的数据。如果说Cookie机制是客户身上的“通行证”,那么Session机制就是多个“通行证”组成的“客户明细表”。「从理论上讲,这两个内存间是联系不到一块的。但是由于这两者相似的性质, java 的 jsp ,spring 的 thymeleaf模板就将他们关联了起来。让人们产生 session和 cookie 是一致的。」 以 jsp 为例,jsp 是一个特殊的 servlet 程序,虽然我们在里面编写的是 html 语句,但他实际上是会通过 servlet 的一些手段从而转变为前端页面。而 spring 和 thymeleaf 模板也用了这样的方式。因为