1. 程式人生 > >Struts2中訪問Servlet API的幾種方式

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


最後都可以實現想要的結果: