ActionContext类-与Servlet API解耦的访问方式
2012-09-06 09:41
120 查看
非IOC方式
为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts2对HttpServletRequest、HttpSession和ServletContext进行了封装,构造了三个Map对象来替代这三种对象,在Action中,直接使用HttpServletRequest、HttpSession、ServletContext对应的Map对象来保存和读取数据。要获得这三个Map对象,可以使用com.opensymphony.xwork2.ActionContext类。
public Object get(Object key)
ActionContext类没有提供类似getRequest()这样的方法来
获取封装了的HttpServletRequest的Map对象。要得到request对象的Map对象,
需要为get()方法传递参数“request”
public Map getSession()
获得封装了HttpSession的Map对象
public Map getApplication()
获取封装了ServletContext的Map对象
public class LoginAction implements Action {
//在这里展示了,如何将用户登对录对象写入到request,session,application作用域中
public User user;
public String execute() throws Exception {
ActionContext context=ActionContext.getContext();
Map request=(Map)context.get(“request”);//获得request对象,只可以设置或是获取属性,不能获取参数。
Map session=(Map)context.getSession();
Map application=(Map)context.getApplication();
request.put(“user”,user);//将user对象放到request作用域中
session.put(“user”,user);//将user对象放到session作用域中
application.put(“user”,user);//将user对象放到application作用域中
}
IOC方式
除了利用ActionCotext来获取request、session、application对象这种方式外,还可以采用在Action类中实现某些特定的接口的方式,让Struts2框架在运行时向Action实例注入request、session和application对象,与之有关的三个接口和它们的方法如下所示:
org.apache.struts2.interceptor.RequestAware
框架利用该接口,向Action实例注入request Map对象。该接口有
void setRequest(Map request)
org.apache.struts2.interceptor.SessionAware
框架利用该接口,向Action实例注入session Map对象。该接口有;
void setSession(Map session)
org.apache.struts2.interceptor.ApplicationAware
框架利用该接口,向Action实例注入application Map对象。该接口有
void setApplication(Map application)
为了避免与Servlet API耦合在一起,方便Action类做单元测试,Struts2对HttpServletRequest、HttpSession和ServletContext进行了封装,构造了三个Map对象来替代这三种对象,在Action中,直接使用HttpServletRequest、HttpSession、ServletContext对应的Map对象来保存和读取数据。要获得这三个Map对象,可以使用com.opensymphony.xwork2.ActionContext类。
public Object get(Object key)
ActionContext类没有提供类似getRequest()这样的方法来
获取封装了的HttpServletRequest的Map对象。要得到request对象的Map对象,
需要为get()方法传递参数“request”
public Map getSession()
获得封装了HttpSession的Map对象
public Map getApplication()
获取封装了ServletContext的Map对象
public class LoginAction implements Action {
//在这里展示了,如何将用户登对录对象写入到request,session,application作用域中
public User user;
public String execute() throws Exception {
ActionContext context=ActionContext.getContext();
Map request=(Map)context.get(“request”);//获得request对象,只可以设置或是获取属性,不能获取参数。
Map session=(Map)context.getSession();
Map application=(Map)context.getApplication();
request.put(“user”,user);//将user对象放到request作用域中
session.put(“user”,user);//将user对象放到session作用域中
application.put(“user”,user);//将user对象放到application作用域中
}
IOC方式
除了利用ActionCotext来获取request、session、application对象这种方式外,还可以采用在Action类中实现某些特定的接口的方式,让Struts2框架在运行时向Action实例注入request、session和application对象,与之有关的三个接口和它们的方法如下所示:
org.apache.struts2.interceptor.RequestAware
框架利用该接口,向Action实例注入request Map对象。该接口有
void setRequest(Map request)
org.apache.struts2.interceptor.SessionAware
框架利用该接口,向Action实例注入session Map对象。该接口有;
void setSession(Map session)
org.apache.struts2.interceptor.ApplicationAware
框架利用该接口,向Action实例注入application Map对象。该接口有
void setApplication(Map application)
相关文章推荐
- Struts2_006_Servlet API解耦的访问方式web资源
- struts2——(6)(①访问Servlet对象的方式(与Servlet API解耦的访问方式)
- Struts2_007_Servlet API解耦的访问方式web资源之Aware
- 8.ActionContext类与Servlet API解耦的访问方式
- Java EE SSH框架之Struts2(3)—— 结果跳转方式和访问ServletAPI方式
- nginx的压力测试、访问方式及加密
- SpringMVC访问静态资源的三种方式小结
- 敏感数据加密保护和数据库访问方式的测试内容
- Exchange 2010 OWA 方式访问ECP 服务器未能处理请求错误
- 遇到问题----win7安装apache服务出现 <OS 10013> 以一种访问权限不允许的方式做了一个访问套接字的尝试
- SQLAlchemy 笔记 ORM方式访问数据库
- vsftpd 各种方式访问的配置
- 三种继承方式与三种访问权限的相互组合
- 蓝桥杯之外设访问方式
- load:加载页面即访问后台方式—例如可做清后台缓存处理
- .NET中窗体间相互访问的几种方式
- SharePoint—用REST方式访问列表 Filter
- ADO.NET_01_访问方式
- rest之Http访问方式
- ubuntu14.04 访问windows目录的方法 mount.cifs方式 取代smbfs方式