Web應用中通常需要訪問的Servlet API就是HttpServletRequest、HttpSession和ServletContext,這三個介面分別代表JSP內置對象中的request、session和application。 1.使用Struts2提供的ActionContext類來訪問 ...
Web應用中通常需要訪問的Servlet API就是HttpServletRequest、HttpSession和ServletContext,這三個介面分別代表JSP內置對象中的request、session和application。
1.使用Struts2提供的ActionContext類來訪問Servlet API。下麵是ActionContext類中包含的幾個常用方法。
Object get(Object key):該方法類似於調用HttpServletRequest的getAttribute(String name)方法。
Map getApplication():返回一個Map對象,該對象模擬了該應用的ServletContext實例。
static ActionContext getContext():靜態方法,獲取系統的ActionContext實例。
Map getParameters():獲取所有的請求參數。類似於調用HttpServletRequest對象的getParameterMap()方法。
Map getSession():返回一個Map對象,該Map對象模擬了HttpSession實例。
void setApplication(Map application):直接傳入一個Map實例,將該Map實例里的key-value對轉換成application的屬性名、屬性值。
void setSession(Map session):直接傳入一個Map實例,將該Map實例里的key-value對轉換成session的屬性名、屬性值。
eg:
通過ActionContext設置application範圍的屬性
ActionContext ctx = ActionContext.getContext();
ctx.getApplication.put("name","aaa");
通過ActionContext設置request範圍的屬性
ctx.put("name","bbb");
2.雖然Struts2提供了ActionContext來訪問Servlet API,但這種訪問不是直接獲得Servlet API的實例,為了直接在Action中訪問Serlvet API,struts2提供瞭如下幾個介面:
ServletContextAware:實現該介面的Action可以直接訪問Web應用的ServletContext實例。
ServletRequestAware:實現該介面的Action可以直接訪問用戶請求的HttpServletRequest實例。
ServletResponseAware:實現該介面的Action可以直接訪問伺服器響應的HttpSerlvetResponse實例。
3.使用ServletActionContext訪問Servlet API
為了能直接訪問Servlet API,Struts2還提供了一個ServletActionContext工具類,這個類包含瞭如下幾個靜態方法。
static PageContext getPageContext():取得Web應用的PageContext的對象。
static HttpServletRequest getRequest():取得Web應用的HttpServletRequest對象。
static HttpServletResponse getResponse():取得Web應用的HttpServletResponse對象。
static ServletContext getServletContext():取得Web應用的ServletContext對象。