注意!

无论是request,session,application必须先调用setAttribute得到保存作用域中保存数据

request:一次请求响应范围

@WebServlet("/demo01")
public class Demo01Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        request.setAttribute("uname","request保存作用域");
        request.getRequestDispatcher("demo02").forward(request,response);
    }
}
@WebServlet("/demo02")
public class Demo02Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        Object unameObj = request.getAttribute("uname");
        System.out.println("unameObj = " + unameObj);
    }
}

使用request保存作用域必须每次先调用demo01获取数据才能在demo02中获取到demo01中保存的数据(从demo01请求转发/地址重定向到demo02)

session:一次会话范围有效

@WebServlet("/demo03")
public class Demo03Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        session.setAttribute("uname","session保存作用域");
        response.sendRedirect("demo04");
    }
}
@WebServlet("/demo04")
public class Demo04Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        HttpSession session = request.getSession();
        Object unameObj = session.getAttribute("uname");
        System.out.println("unameObj = " + unameObj);
    }
}

一次会话可以简单理解为一个(谷歌)浏览器,只要在某一(谷歌)浏览器保存了作用域的信息,无论demo03通过地址重定向/请求转发还是手动输入demo04地址跳转都能获取demo03的保存作用域的信息。期间如果更换了(Edge)浏览器或者将此(谷歌)浏览器关闭了再打开即本来的sessionID丢失生成新的sessionID,这种情况下就需要重写访问demo03获取作用域的信息才能在demo04中获取信息

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

@WebServlet("/demo05")
public class Demo05Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //1.向application保存作用域保存数据
        //ServletContext : Servlet上下文
        ServletContext application = request.getServletContext();
        application.setAttribute("uname","session保存作用域");
        response.sendRedirect("demo06");
    }
}
@WebServlet("/demo06")
public class Demo06Servlet extends HttpServlet {
    @Override
    protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        ServletContext application = request.getServletContext();
        Object unameObj = application.getAttribute("uname");
        System.out.println("unameObj = " + unameObj);
    }
}

一次应用程序可以理解为一个服务器Tomcat,只要某一(谷歌)浏览器通过demo05生成了了作用域信息即使更换(Edge)浏览器或者重启此(谷歌)浏览器访问demo06都能得到demo05保存的作用域信息

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。