注意!
無論是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保存的作用域資訊
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/530055.html
標籤:Java
