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(); }