Action访问ServletAPI:
Struts2的Action并未直接与任何Servlet API耦合,这是Struts2的一个改良之处,因为Action类不再与Servlet API耦合,从而能更轻松的测试该Action。
但对于Web应用的控制器而言,不访问Servlet API几乎是不可能的,例如跟踪HTTP Session状态等。Struts2框架提供了一种更轻松的方式来访问Servlet API。Web应用中通常需要访问的Servlet API就是HttpServletRequest,HttpSession和ServletContext,这三个类分别代表JSP内置对象中的request,session和appliaction。
Struts2提供了一个ActionContext类,Struts2的Action可以通过该类来访问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的属性名、属性值。
二、struts2还提供如下接口访问:
1.ServletContextAware:实现该接口的Action可以直接访问Web应用的ServletContext实例。
2.ServletRequestAware:实现该接口的Action可以直接访问用户请求的HttpServletRequest实例。
3.ServletResponseAware:实现该接口的Action可以直接访问服务器响应的HttpServletResponse实例。
三、struts2提供了一个ServletActionContext工具类,包含如下方法:
- static PageConetxt getPageContext() : 取得Web应用的PageContext对象;
- static HttpServletRequest getRequest() : 取得Web应用的HttpServletRequest 对象;
- static HttpServletResponse getResponse() : 取得Web应用的HttpServletResponse 对象;
- static ServletContext getServletContext() : 取得web应用的ServletContext对象
本文介绍了Struts2框架如何通过ActionContext类及其提供的方法访问ServletAPI,包括HttpServletRequest、HttpSession和ServletContext等核心组件。此外,还介绍了Struts2如何通过实现特定接口以及使用ServletActionContext工具类来直接访问这些组件。

被折叠的 条评论
为什么被折叠?



