ServletContext、HttpSession和HttpServletRequest的區別和聯系


1. ServletContext:范圍最大,應用程序級別的,整個應用程序都能訪問;
2. HttpSession–次之,會話級別的,在當前的瀏覽器中都能訪問[不論是在同一瀏覽器開多少窗體,都能夠訪問],可是換個瀏覽器就不行了,
    就必須又一次創建session;
3. HttpServletRequest–范圍最小,請求級別,請求結束,變量的作用域也結束【也就是僅僅是一次訪問,訪問結束,這個也結束】。

如:

/**
     * 在Servlet中懂得ServletContext HttpSession 以及HttpServletRequest之間的關系:
     * ServletContext–范圍最大,應用程序級別的,整個應用程序都能訪問
     * HttpSession–次之,會話級別的,在當前的瀏覽器中都能訪問[不論是在同一瀏覽器開多少窗體,都能夠訪問],可是換個瀏覽器就不行了。
     * 就必須又一次創建session
     * HttpServletRequest –范圍最小,請求級別,請求結束,變量的作用域也結束[也就是僅僅是一次訪問,訪問結束,這個也結束]
     * 
     * @param request
     * @param response
     * @return
     */
    @RequestMapping("/testServlet")
    public ResponseBean testServlet(HttpServletRequest request, HttpServletResponse response) {
        // 1
        ServletContext sc = request.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");

        log.debug(sc_value + ":" + session_value + ":" + request_value);

        // request.getRequestDispatcher("MyServlet2").forward(request, response);

        return ResponseBean.buildSuccessResponse();
    }

    @RequestMapping("/testServlet2")
    public ResponseBean testServlet2(HttpServletRequest request, HttpServletResponse response) {
        // 1
        ServletContext sc = request.getServletContext();
        // 2
        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");

        log.debug(sc_value + ":" + session_value + ":" + request_value);

        // request.getRequestDispatcher("MyServlet2").forward(request, response);

        return ResponseBean.buildSuccessResponse();
    }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM