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对象。