struts2 中的ActionContext与ServletActionContext
来源:互联网 发布:人工智能 视频分析 编辑:程序博客网 时间:2024/06/10 09:11
在Struts2中,进行业务控制的类就是普通的java类,只是在类中有一个业务控制的方法execute()(实际上该方法也可在struts.xml的action元素指定),这样实现了将Action与Servlet Api进行了分离,极大地降低了框架与Sevlet api的耦合度,便于业务控制器的测试。但这样一来,Servlet经常用到的request、session、application等就无法在业务控制中使用了,为使Action类能访问Servlet Api,struts2框架提供了ActionContext类和ServletActionContext.
1.ActionContext(com.opensymphony.xwork.ActionContext)类
ActionContext类是Action执行时的上下文,Action运行时所用到的对象都保存在ActionContext中,例如请求的参数、Session和本地化信息等。ActionContext是线程安全的,在每次执行Action前创建新的ActionContext对象,代码如下:
ActionContext context=ActionContext.getContext();
获取request、session、application对象方法如下:
Map session=ActionContext.getContext().getSession();Map application =ActionContext.getContext().getApplication();Map request=ActionContext.getContext().get("request");
注意:利用ActionContext 获得的request、session并不是HttpServletRequest、HttpSession类型,而是Map类型,例如将session类型封装成Map类型代码如下 :
Map map = new SessionMap(request); public class SessionMap extends AbstractMap{ private HttpSession session; public RequestMap(HttpServletRequest request){ this.session = request.getSession(); } public void put(Object key,Object value){ session.setAttribute(key.toString(),value); } public Object get(Object key){ return session.getAttribute(key.toString()); } }
ServletActionContext类是ActionContext的子类,该类可以直接返回Servlet api中的相应的servlet类型,代码如下:
HttpServletRequest request=ServletActionContext.getRequest();HttpServletResponse response=ServletActionContext.getRession();HttpSession session=ServletActionContext.getReqeust().getSession();
说明:ActionContext能够实现的功能,尽量不要使用ServletActionContext,尽量不要让Action直接访问java servlet对象。
0 0
- struts2 中的ActionContext与ServletActionContext
- 【struts2】ActionContext与ServletActionContext
- struts2 ActionContext与ServletActionContext
- 【struts2】ActionContext与ServletActionContext
- 【struts2】ActionContext与ServletActionContext
- Struts2中的ActionContext和ServletActionContext
- ServletContext和Struts2中的ActionContext/ServletActionContext区别
- Struts2中的ActionContext和ServletActionContext的区别
- struts2中 ServletActionContext与ActionContext区别
- struts2中 ServletActionContext与ActionContext区别
- struts2中 ServletActionContext与ActionContext区别
- struts2中 ServletActionContext与ActionContext区别
- struts2----中 ServletActionContext与ActionContext区别
- struts2中 ServletActionContext与ActionContext区别
- struts2中 ServletActionContext与ActionContext区别
- struts2中 ServletActionContext与ActionContext区别
- Struts2的 ActionContext && ServletActionContext
- Struts2的 ActionContext && ServletActionContext
- WebStorm注册码
- java 基础之集合框架-----05
- Java实践(十一)——五子棋
- java 神奇的import之静态导入
- 语言常识及dos基本命令
- struts2 中的ActionContext与ServletActionContext
- Java与C通讯 网络流解析
- C++ explicit关键字
- 黑马程序员_Java基础[16]_多态2
- DateTime类型ToString时要显示AM/PM怎么办
- 取视频的第一帧作为初始页面
- 设计模式之单例模式(Singleton)
- armv6, armv7, armv7s的区别
- 南阳理工OJ_题目44 子串和