Thymeleaf访问域对象:如何将数据存入域及如何在html页面获取域中的数据(session域与cookie的应用)

在请求转发的场景下,我们可以借助HttpServletRequest对象内部给我们提供的存储空间,帮助我们携带数据,把数据发送给转发的目标资源。

通俗的讲就是:把服务器中的数据传递到网页

①请求域

请求域:HttpServletRequest对象内部给我们提供的存储空间

request请求域只能在请求转发的页面访问,其他页面是取不到值的。

Thymeleaf访问域对象:如何将数据存入域及如何在html页面获取域中的数据(session域与cookie的应用)_第1张图片

在servelet将数据存入属性域

(使用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}]]

页面如图:

Thymeleaf访问域对象:如何将数据存入域及如何在html页面获取域中的数据(session域与cookie的应用)_第2张图片

②会话域

浏览器发请求到某项目,查询数据,存到哪里呢,用会话域存储用户身份信息,去到当前项目的任何页面,都可以把session会话域存放的数据取出来。session会话域默认存放时间是30分钟,超过时间就失效,所以我们有时候登录一些网站的时候,好久没去管,再登录的时候就会登录超时。

session设置存放时间


    
    30

在servelet将数据存入session域

//通过request对象获取HttpSession对象:session
HttpSession session = req.getSession();
session.setAttribute("username","张三");
session.setAttribute("password","0000");
session.setAttribute("phone","155555");

会话域取值

注意:取值时前面一定要加session.

会话域测试取值

用户名:
密码:
手机:
[[${session.username}]]
[[${password}]]
[[${phone}]]

③应用域(使用比较少)

在servelet将数据存入应用域

//上下文对象 -> 应用域 -> 全局作用域
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域与Cookie的关系

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即存在于硬盘上。

你可能感兴趣的:(java,servlet,前端,html)