Struts2访问Servlet API 的三种方式为:
1、通过ActionContext类
2、Action直接访问Servlet API
一:通过ActionContext类
Struts2提供了ActionContext类,struts2可以通过该类来实现与Servlet API的访问。
ActionContext类提供了如下7种方法:
Object get(Object key):类似于调用HttpServletRequest的getAttribute(String name)方法
Map getApplication():返回一个Map对象,该对象模拟了该应用的ServletContext实例。
static ActionContext getContext():这是个静态方法 获取系统的ActionContext实例
Map getParameters():获取所有请求参数,类似于调用HttpServletRequest对象的getParameterMap()方法
Map getSession() 返回一个Map对象,该对象模拟了HttpSession 实例
void setApplication(Map application):传入一个Map实例,将Map实例的key-value转换成application的属性名-值。
void setSession(Map session):传入一个Map实例,将Map实例的key-value转换成application的属性名-值。
二:Action直接访问Servlet API
Struts2提供了如下3个接口使Action可以直接访问到Servlet API:
ServletContextAware:实现该接口的Action可以直接访问Web应用的ServletContext实例
ServletRequestAware:实现该接口的Action可以直接访问Web应用的ServletRequest实例.
ServletResponseAware:实现该接口的Action可以直接访问Web应用的ServletRsponse实例.
以ServletResponseAware接口为例 实现该接口时,需要实现ServletResponse(HttpServletResponse response)方法内 response参数就Web客户端对用户的相应,我们应该先将此参数设置成 Action参数属性 从而才能在execute()方法中该HttpServletResponse对象。
三:使用ServletActionContext访问Servlet API
Struts2还提供了一个ServletActionContext工具类用来访问Servlet API。
该类包含了以下4个静态方法:
static PageContext getPageContext(): 取得Web应用的PageContext对象。
static HttpServletRequest getRequest(): 取得Web应用的 HttpServletRequest对象。
static HttpServletResponse getResponse(): 取得Web应用的HttpServletResponse对象。
static ServletContext getServletContext(): 取得Web应用的ServletContext对象。
以上。