保存作用域我们可以认为有四个:
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);
}
}