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