一、引入
原始情况下,保存作用域我们可以认为有四个:page(页面级别),request(一次请求响应范围),session(一次会话范围),application(整个应用程序范围)
page目前已经不用了,除非我们学的是之前老的jsp技术。
二、request:一次请求响应范围
Demo01Servlet.java
@WebServlet("/demo01")
public class Demo01Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.向request保存作用域保存数据
request.setAttribute("uname", "lili");
// 2.客户端重定向
response.sendRedirect("demo02"); // demo2不可以获取到
// 3.服务器转发
request.getRequestDispatcher("demo02").forward(request, response); // demo2可以获取到
}
}
Demo02Servlet.java
@WebServlet("/demo02")
public class Demo02Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.获取request保存作用域保存的数据,key为name
Object unameObj = request.getAttribute("uname");
System.out.println(unameObj);
}
}
二、session:一次会话范围内有效
Demo03Servlet.java
@WebServlet("/demo03")
public class Demo03Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.向session保存作用域保存数据
request.getSession().setAttribute("uname", "lili");
// 2.客户端重定向
response.sendRedirect("demo04"); // demo3可以获取到
// 3.服务器转发
request.getRequestDispatcher("demo04").forward(request, response); // demo3也可以获取到
}
}
Demo04Servlet.java
@WebServlet("/demo04")
public class Demo04Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.获取request保存作用域保存的数据,key为name
Object unameObj = request.getSession().getAttribute("uname");
System.out.println(unameObj);
}
}
三、application:一次应用范围内有效
除非tomcat停止掉,tomcat一停止,这个应用程序就结束了。
Demo05Servlet.java
@WebServlet("/demo05")
public class Demo05Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.向application保存作用域保存数据。
// ServletContext叫servlet上下文。正常情况下,不严谨的情况来讲,当前的web程序可以称之为servlet程序,因为它里面有大量的控制器组件叫servlet,表示这一次的tomcat启动了,上下文开始了,tomcat停止,上下文就结束了
ServletContext application = request.getServletContext();
application.setAttribute("uname", "lili");
// 2.客户端重定向
response.sendRedirect("demo06"); // demo2不可以获取到
// 3.服务器转发
request.getRequestDispatcher("demo06").forward(request, response); // demo6可以获取到
}
}
Demo06Servlet.java
@WebServlet("/demo06")
public class Demo02Servlet extends HttpServlet {
@Override
protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// 1.获取request保存作用域保存的数据,key为name
Object unameObj = request.getServletContext.getAttribute("uname");
System.out.println(unameObj);
}
}