ActionContext和ServletActionContext区别

1.ActionContext 
xwork框架的ActionContext是Action执行时的上下文,存放Action执行时需要用到的对象。在使用webwork时,其中放有Parameter、Session、ServletContext、Locale等信息。这样,webwork负责将Servlet相关数据转换为与ServletAPI无关的Map对象(即ActionContext),使得xwork的Action实现与web层、逻辑层与表现层的解耦。 

2.ServletActionContext 
提供直接与Servlet容器交互的途径。通过它,可以取得HttpServletRequest、HttpServletResponse 、ServletConfig、ServletContext、PageContext 对象。但是,使用ServletActionContext意味着Action与ServletAPI的紧密耦合。 

3.由于WebWork对request,parameter,Session和Application都进行了封装,将这些隐含的对象封装成了相应的Map,如RequestMap,ParameterMap,SessionMap和ApplicationMap,而这些Map就组成 

了ActionContext,因此我们通常都不再需要与request,session这些底层的对象打交道了,这也是我一开始觉得迷惑的地方,因为我找不到Session了。事实上,对于SessionMap的处理即是对Session的 

处理了。我们可以通过ActionContext的静态方法getContext返回一个ActionContext的实例,然后再调用其getSession方法获得SessionMap,接着就可以利用put和get方法对session进行读写的操作了。 


Map params = new HashMap();;   
params.put(String, String);;   
......   
Map extraContext = new HashMap();;   
extraContext.put(ActionContext.PARAMETERS,params); 

Map session = new HashMap();;   
session.put("foo", "bar");;   
extraContext.put(ActionContext.SESSION, session); 

ActionContext ctx = ActionContext.getContext(); 
Map session = ctx.getSession(); 
session.put("username",loginInfo.getUsername()); 

ActionContext ctx = ActionContext.getContext(); 
Map params = ctx.getParameters(); 
String username = ctx.getParameters("username"); 

OgnlValueStack stack = new OgnlValueStack(); 
stack.push(new User());//首先将欲赋值对象压入栈中 
stack.setValue("name","erica");//为栈顶对象的指定属性名赋值 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值