JavaWeb作用域
作者:互联网
JavaWeb作用域
综述
javaweb有四个不同级别的作用域,分别是page页面级别、一次请求级别、一次会话级别、整个web级别。page没有进行实现
请求级别
只对一次request有效,结束请求时保存的数据就会消失
示例代码
servletA
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 在servletA中保存一个值到request中,在servletB中读取
req.setAttribute("item_a", "这是Servlet A保存的值");
resp.sendRedirect("/JavaWebDemo_war_exploded/request/b");
}
servletB
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 从reqquest中获取servletA存的值
System.out.println("读取到的servlet a 保存的值是:" + req.getAttribute("item_a"));
}
测试
首先访问servletA,写入值。在访问servletB读取值。结果如下:
表明,在前一个servlet中写入的数据到另一个servle中就会消失
会话级别
保存的数据可以持续一个会话,即第一次调用request.getSession()开始到session过期为止。
测试代码
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 在servletA中保存一个值到Session中,在另一个Servlet中读取
req.getSession().setAttribute("item_a", "这是Servlet A保存的值");
resp.sendRedirect("/JavaWebDemo_war_exploded/scope/session/b");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 从session中获取a存的值
System.out.println("读取到的servlet a 保存的值是:" + req.getSession().getAttribute("item_a"));
}
测试
首先访问servletA写入数据,再访问servletB读取数据
成功读取到对应值,再使用其他浏览器或工具访问b,如下图
第一行是eage访问结果,第二行使用ApiPost访问结果,表明session级别存储的数据是针对浏览器的
web级别
web级别的数据会保存在web服务器中,在写入之后,只有在服务器关闭才会消失
测试代码
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 在servletA中保存一个值到ServletContext中,在另一个Servlet中读取
ServletContext application = req.getServletContext();
application.setAttribute("item_a", "这是Servlet A保存的值");
resp.sendRedirect("/JavaWebDemo_war_exploded/scope/web/b");
}
@Override
protected void service(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
// 从ServletContext中获取a存的值
ServletContext application = req.getServletContext();
System.out.println("读取到的servlet a 保存的值是:" + application.getAttribute("item_a"));
}
结果
上面为网页访问servlet获取到的,下面为apipost访问获取到的,均有值。
标签:JavaWeb,ServletException,作用域,resp,req,保存,servletA,级别 来源: https://www.cnblogs.com/mrystar/p/16369336.html