通俗的讲就是:把服务器中的数据传递到网页
请求域:HttpServletRequest对象内部给我们提供的存储空间
request请求域只能在请求转发的页面访问,其他页面是取不到值的。
(使用request请求域来保存一些数据),代码如下:
@WebServlet("/RegionServlet")
public class RegionServlet extends ViewBaseServlet{
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
req.setAttribute("username","尚");
req.setAttribute("password","123456");
req.setAttribute("phone","1527278");
super.processTemplate("region", req, resp);
}
}
Thymeleaf表达式(在页面取值):
请求域测试取值
用户名:
密码:
手机:
表单元素都是value,非表单例如h1标签就是text:
[[${username}]]
[[${password}]]
[[${phone}]]
页面如图:
浏览器发请求到某项目,查询数据,存到哪里呢,用会话域存储用户身份信息,去到当前项目的任何页面,都可以把session会话域存放的数据取出来。session会话域默认存放时间是30分钟,超过时间就失效,所以我们有时候登录一些网站的时候,好久没去管,再登录的时候就会登录超时。
30
//通过request对象获取HttpSession对象:session
HttpSession session = req.getSession();
session.setAttribute("username","张三");
session.setAttribute("password","0000");
session.setAttribute("phone","155555");
注意:取值时前面一定要加session.
会话域测试取值
用户名:
密码:
手机:
[[${session.username}]]
[[${password}]]
[[${phone}]]
//上下文对象 -> 应用域 -> 全局作用域
ServletContext servletContext = getServletContext();
servletContext.setAttribute("username","李四");
servletContext.setAttribute("password","010101");
servletContext.setAttribute("phone","1333333");
页面取值时使用${application.xxx}这个application就是我们servlet类中的ServletContext对象
会话域测试取值
用户名:
密码:
手机:
[[${session.username}]]
[[${password}]]
[[${phone}]]
应用域测试取值
用户名:
密码:
手机:
[[${application.username}]]
[[${password}]]
[[${phone}]]
应用域生命周期更长,他是与服务器生命一样长,只要服务器不关,保存到应用域中的数据会一直有效,直到你关闭服务器
session会话域默认可以保存30分钟数据有效果,但前提是不要关闭浏览器,如果关闭浏览器再访问,就访问不到session中的数据了。当我们关闭浏览器时,此时的Cookie是存在于浏览器的进程中的,当浏览器关闭时,Cookie中对应的SESSIONID的session数据也就不存在了。
session是基于cookie的一种会话技术, 数据存放存放在服务器端。客户端在cookie携带JSESSIONID(tomcat服务器生成),来访问服务端,获取对应JSESSIONID的session数据。
会话是浏览器和服务器之间的多次请求和响应
也就是说,从浏览器访问服务器开始,到访问服务器结束,浏览器关闭为止的这段时间内容产生的多次请求和响应,合起来叫做浏览器和服务器之间的一次会话
客户端会话技术 —— Cookie
服务器会话技术 —— Session
应用:例如在网站登录功能中会在后端实现将登录信息从session域取出保存到cookie中,在下次访问此网站时,就不用再次登录了,cookie中的数据一般会保存较长时间。cookie详细介绍请看:
Cookie是什么?怎么使用-CSDN博客
Cookie有两种:
而session的Cookie是存在于浏览器的进程中,那么这种Cookie我们称为会话Cookie,
当我们重新打开浏览器窗口时,之前的Cookie中存放的Sessionid已经不存在了,登录功能所用到的Cookie即存在于硬盘上。