標籤:on() rac name ted 之間 mod blog tracking att
課程目標:
① 在Servlet中懂得ServletContext HttpSession 以及HttpServletRequest之間的關係
② 懂得怎樣使用它們
概念介紹:
1. [共同點]不管對象的範圍怎樣,共用變數和獲得變數的 方法都是一致的
–setAttribute(“varName”,obj);
–getAttribute(“varName”);
2. 變數的範圍
ServletContext–範圍最大,應用程式層級的,整個應用程式都能訪問
HttpSession – 次之。會話層級的,在當前的瀏覽器中都能訪問[不論是在同一瀏覽器開多少表單,都能夠訪問],可是換個瀏覽器就不行了,就必須又一次建立session
HttpServletRequest –範圍最小,請求層級。請求結束,變數的範圍也結束[也就是僅僅是一次訪問。訪問結束,這個也結束]
3. 執行個體
插播廣告:部落格之星評選,點擊投我一票,謝謝。
以上三個資料的設定:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { // 1 ServletContext sc = this.getServletContext(); sc.setAttribute("sc_name", "sc_value"); // 2 HttpSession session = request.getSession(); session.setAttribute("session_name", "session_value"); // 3 request.setAttribute("request_name", "request_value"); String sc_value = (String) sc.getAttribute("sc_name"); String session_value = (String) session.getAttribute("session_name"); String request_value = (String) request.getAttribute("request_name"); System.out.println(sc_value+":"+session_value+":"+request_value); // request.getRequestDispatcher("MyServlet2").forward(request, response); }
Servlet2 的擷取:
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { ServletContext sc = this.getServletContext(); HttpSession session = request.getSession(); String sc_value = (String) sc.getAttribute("sc_name"); String session_value = (String) session.getAttribute("session_name"); String request_value = (String) request.getAttribute("request_name"); System.out.println(sc_value+":"+session_value+":"+request_value);}
結論:
HttpServletRequest 僅僅是瀏覽器的一次訪問。除非servlet做處理,比方
request.getRequestDispatcher("MyServlet2").forward(request, response);
就會傳遞。
Session 用於同一瀏覽器,能夠互相調用資料
ServletContext 整個應用程式都能夠訪問
Servlet第七課:ServletContext HttpSession 以及HttpServletRequest之間的關係