Struts2中訪問Servlet API的幾種方式
一:通過ActionContext類
Struts2提供了ActionContext類,struts2可以通過該類來實現與Servlet API的訪問。
ActionContext類提供瞭如下幾種方法:
1:Object get(Object key):類似於呼叫HttpServletRequest的getAttribute(String name)方法
2:Map getApplication():返回一個Map物件,該物件模擬了該應用的ServletContext例項。
3:static ActionContext getContext():這是個靜態方法 獲取系統的ActionContext例項
4:Map getParameters():獲取所有的請求引數,類似於呼叫HttpServletRequest物件的getParameterMap()方法
5:Map getSession() 返回一個Map物件,該物件模擬了HttpSession 例項
6:void setApplication(Map application):傳入一個Map例項,將Map例項的key-value轉換成application的屬性名-值。
7:void setSession(Map session):傳入一個Map例項,將Map例項的key-value轉換成application的屬性名-值。
例項:通過ActionContext類實現簡單的提示操作
二:Action直接訪問Servlet API
Struts2提供瞭如下幾個介面使Action可以直接訪問到Servlet API:
1:ServletContextAware:實現該介面的Action可以直接訪問Web應用的ServletContext例項
2:ServletRequestAware:實現該介面的Action可以直接訪問Web應用的ServletRequest例項.
3:ServletResponseAware:實現該介面的Action可以直接訪問Web應用的ServletRsponse例項.
以ServletResponseAware介面為例 實現該介面時,需要實現ServletResponse(HttpServletResponse response)方法內 response引數就Web客戶端對使用者的相應,我們應該先將此引數設定成 Action引數屬性 從而才能在execute()方法中該HttpServletResponse物件,如圖:通過實現ServletContextAware介面新增Cookie
此execute()通過ServletActionContext().getResponse()實現新增Cookie。
三:使用ServletActionContext訪問Servlet API
Struts2還提供了一個ServletActionContext工具類用來訪問Servlet API。
該類包含了一下幾個靜態方法:
1:static PageContext getPageContext():取得Web應用的PageContext物件。
2:static HttpServletRequest getRequest():取得Web應用的 HttpServletRequest物件。
1:static HttpServletResponse getResponse():取得Web應用的HttpServletResponse物件。
1:static ServletContext getServletContext():取得Web應用的ServletContext物件。
例項:通過ServletActionContext.getResponse()方法新增Cookie
最後都可以實現想要的結果: