1. 程式人生 > >Servlet第七課:ServletContext HttpSession 以及HttpServletRequest之間的關系

Servlet第七課:ServletContext HttpSession 以及HttpServletRequest之間的關系

ora cep 結束 context pan 介紹 row for 瀏覽器中

課程目標:


① 在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之間的關系