保存作用域我们可以认为有四个:
1. page(页面级别,现在几乎不用)
2. request(一次请求响应范围)
3. session(一次会话范围)
4. application(整个应用程序范围)
1) request:一次请求响应范围
如果第二次请求的就不能访问,(重定向就不行,而服务器端内部转发就可以)

@WebServlet("/Demo01")
public class Demo01Request extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//向request保存作用域保存数据
request.setAttribute("uname","lili");
//客户端重定向
// response.sendRedirect("demo02");
//服务器端内部转发
request.getRequestDispatcher("Demo02").forward(request,response);
}
}
@WebServlet("/Demo02")
public class Demo02Request extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取request保存作用域保存的数据
Object uname = request.getAttribute("uname");
System.out.println("uname:"+uname);
}
}
2) session:一次会话范围有效
一次会话范围,用的哪种跳转方式,只要session会话没有过期失效。

3) application: 一次应用程序范围有效

//演示Application保存作用域
@WebServlet("/Demo05")
public class Demo01Application extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//向Application保存作用域保存数据
// ServletContext:servlet上下文
ServletContext application=request.getServletContext();
application.setAttribute("uname","lili");
//客户端重定向
// response.sendRedirect("demo02");
request.getRequestDispatcher("Demo06").forward(request,response);
}
}
@WebServlet("/Demo06")
public class Demo02Application extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//1.获取applicaton保存作用域保存的数据
ServletContext servletContext = request.getServletContext();
Object uname = servletContext.getAttribute("uname");
System.out.println("uname:"+uname);
}
}
本文详细介绍了Servlet中request、session和application三种作用域的区别,重点讲解了如何在请求间保存数据,以及它们的有效范围。通过实例演示了在不同场景下如何操作这些作用域,并强调了session的会话持久性。
2253

被折叠的 条评论
为什么被折叠?



