淺談ServletContext,HttpServletRequest,HttpServletResponse,HttpSession的獲取
阿新 • • 發佈:2018-12-30
(1)對於一個web容器,ServletContext 是Servlet與Servlet容器之間直接通訊的介面,Servlet容器在啟動一個web應用時,會為它建立一個ServletContext物件,每個web應用有唯一的ServletContext物件,同一個web應用的所有Servlet物件共享一個 ServletContext,Servlet物件可以通過它來訪問容器中的各種資源。簡單的說,對於一個web應用,servletContext物件就是這個web容器的全域性物件。
(2)網上很多人提問題想要在一個普通java類中獲取這四個物件,自我感覺是沒有什麼意義的,除非有特殊需求,而真正需要這四個類的地方現在無非就是servlet和由struts2封裝了的servlet也就是action,下面舉出幾種常見的獲取方法。
普通servlet中:
servlet是繼承了httpServlet的java普通類,因此在其方法(比如doGet,doPost)的引數中都會預設取到HttpServletRequest,HttpServletResponse這個兩個類,同樣ServletContext和HttpSession也夠可以通過HttpServletRequest這個類取到:
(1)在繼承ActionSupport後,可以通過ServletActionContext這個類獲得。
(2)可以通過繼承ServletRequestAware,ServletResponseAware, ServletContextAware這三個類獲得。
(2)網上很多人提問題想要在一個普通java類中獲取這四個物件,自我感覺是沒有什麼意義的,除非有特殊需求,而真正需要這四個類的地方現在無非就是servlet和由struts2封裝了的servlet也就是action,下面舉出幾種常見的獲取方法。
普通servlet中:
servlet是繼承了httpServlet的java普通類,因此在其方法(比如doGet,doPost)的引數中都會預設取到HttpServletRequest,HttpServletResponse這個兩個類,同樣ServletContext和HttpSession也夠可以通過HttpServletRequest這個類取到:
request.getSession().getServletContext();
request.getSession();
方法取得。
在action中:
(1)在繼承ActionSupport後,可以通過ServletActionContext這個類獲得。
(2)可以通過繼承ServletRequestAware,ServletResponseAware, ServletContextAware這三個類獲得。
public class HelloWorldAction implements ServletRequestAware, ServletResponseAware, ServletContextAware { private HttpServletRequest request; private ServletContext servletContext; private HttpServletResponse response; public void setServletRequest(HttpServletRequest req) { this.request = req; } public void setServletResponse(HttpServletResponse res) { this.response = res; } public void setServletContext(ServletContext ser) { this.servletContext = ser; } }