Struts2中Action訪問Servlet API的三種方法

Struts2的Action並未直接與任何Servlet API耦合,這是Struts2的一個改良之處,由於Action類再也不與Servlet API耦合,能更輕鬆的測試該Action。但如何訪問? 服務器

Web應用中一般須要訪問的Servlet API就是HttpServletRequest、HttpSession、ServletContext這3個類,分別表明JSP內置對象中的request、session、application。 session

方法一:(通常推薦使用,IOC方式,只能得到request,而response則得不到) app

Struts2提供了ActionContext類,經過ActionContext類訪問Servlet API。 測試

下面是ActionContext類中包含的幾個經常使用方法。 spa

一、public Object get(Object key):取得HttpServletRequest中key的值; 對象

二、void put(String key,Object value):設置HttpServletRequest中key的值爲value; 接口

三、public Map getApplication():獲取封裝了ServletContext的Map對象; get

四、void setApplication(Map application):設置ServletContext實例; io

五、static ActionContext getContext():靜態方法,獲取系統的ActionContext實例; request

六、Map getParameters():相似於HttpServletRequest中的getParametersMap方法;

七、public Map getSession():獲取封裝了HttpSession的Map對象;

八、void setSession(Map session):直接傳入一個Map實例,將該Map實例裏的key-value對轉換爲session的屬性名和屬性值;

方法二:(不推薦,麻煩,非IOC方式,與Servlet API耦合大)

雖然Struts2提供了ActionContext來訪問Servlet API,但這種訪問不能直接得到Servlet API,爲了在Action中直接訪問Servlet API,Struts2還提供瞭如下接口。

一、ServletContextAware:實現該接口的Action能夠直接訪問Web應用的ServletContext實例;

二、ServletRequestAware:實現該接口的Action能夠直接訪問用戶請求對象的HttpServletRequest的實例;

三、ServletResponseAware:實現該接口的Action能夠直接訪問服務器響應的HttpServletResponse的實例;

方法三:(非IOC方式,強烈推薦使用)

Struts2還提供了一個ServletActionContext,其靜態方法有:getPageContext()、getRequest() 、getResponse()、getServletContext()。

一、HttpServletRequest request=ServletActionContext.getRequest();

二、HttpServletResponse response=ServletActionContext.getResponse();

三、request.getSession().setAttribute("username","admin");

四、request.setAttribute("password","123456");

相關文章
相關標籤/搜索