struts2中访问servlet API
Struts2中的Action沒有與任何Servlet API耦合,,但對于WEB應(yīng)用的控制器而言,不訪問Servlet API幾乎是不可能的,例如需要跟蹤HTTP Session狀態(tài)等。Struts2中提供了一個ActionContext類,Struts2的Action可以通過該類來訪問Servlet API。
ActionContext類中包含的幾個常用方法:
Object get(Object key):該方法類似于調(diào)用HttpServletRequest的getAttribute(String name)方法。
Map getApplication:返回一個Map對象,該對象模擬了該應(yīng)用的ServletContext實例。
static ActionContext getContext():靜態(tài)方法,獲取系統(tǒng)的ActionContext實例。
Map getParameters():獲取所有的請求參數(shù)。類似于調(diào)用HttpServletRequest對象的getParameterMap()方法。
Map getSession():返回一個Map對象,該Map對象模擬了HttpSession實例。
void setApplication(Map application):直接傳入一個Map實例,將該Map實例里的key-value對轉(zhuǎn)換成application的屬性名、屬性值。
void setSession(Map session):直接傳入一個Map實例,將該Map實例里的key-value對轉(zhuǎn)換成session的屬性名、屬性值。
例子:
public class TextAction implements Action{
public String execute() throws Exception{
ActionContext ctx=ActionContext.getContext(); //獲取ActionContext實例
Integet counter=(Integer)ctx.getApplication().get("counter"); ? //獲取application范圍的屬性值
return SUCCESS;
? ? ? ? ? ? ? ?}
? ? ? ?}
雖然struts2提供了ActionContext來訪問Servlet API,但這種訪問不是直接獲得servlet API的實例,為了在Action中訪問Servlet API,struts2中還提供了以下幾個接口:
ServletContextAware:實現(xiàn)該接口的Action可以直接訪問WEB應(yīng)用的ServletContext實例。
ServletRequestAware:實現(xiàn)該接口的Action可以直接訪問WEB應(yīng)用的HttpServletRequest實例。
ServletResponseAware:實現(xiàn)該接口的Action可以直接訪問服務(wù)器響應(yīng)的HttpServletResponse實例。
除此之外,為了能直接訪問Servlet API,struts2還提供了一個ServletActionContext工具類,這個類包含了如下幾個靜態(tài)方法:
static PageContext getPageContext():取得WEB應(yīng)用的PageContext對象。
static HttpServletRequset getRequets():取得Web應(yīng)用的HttpServletRequset對象。
static HttpServletRsponse getResponse():取得WEB應(yīng)用的HttpServletResponse對象。
static ServletContext getServletContext():取得WEB應(yīng)用的ServletContext對象。
轉(zhuǎn)載于:https://www.cnblogs.com/ChanSS/p/5492380.html
總結(jié)
以上是生活随笔為你收集整理的struts2中访问servlet API的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: angularJs中ngModel的坑
- 下一篇: 软件评价