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