struts2中Action类如何获得作用域对象

Struts2 学习: 第三章,struts2中Action类如何获得作用域对象。
2009-03-27 23:03
现在有点喜欢Struts2这个框架了。

在struts1中我们的Action的execute方法中是将请求和响应当做参数传递给了Action。

而在Struts2中Action的execute方法是没有任何的参数。

哪我们如何去获得作用域对象,没有作用域对象就没有办法操作里面的数据。

到这里我们先不要着急,首先我们来讲解一下Struts2中Action的运行过程。

当Struts2的过滤器启动的时候,首先就会初始化一个叫做ServletActionContext的类。

它掌管着所有的作用域对象。

import org.apache.struts2.ServletActionContext;

public class ContextAction implements Action {


    public String execute() throws Exception {
        //获得请求
        HttpServletRequest _request = ServletActionContext.getRequest();
        //获得会话
        HttpSession _session = _request.getSession();
        //获得上下文对象
        ServletContext _application = ServletActionContext.getServletContext();
      }

}
-------------------------------------------------------------------------------

所以一个普通的Action类就可以通过这种方式得到所有的作用域对象。

当然这是Strtus2中才能使用的特性。

-------------------------------------------------------------------------------

而在原来的webwork中又是如何得到作用域对象的?

import com.opensymphony.xwork2.Action;
import com.opensymphony.xwork2.ActionContext;

public class ContextAction implements Action {

    public String execute() throws Exception {
       
       ActionContext ctx = ActionContext.getContext();//得到Struts2的上下文
        Map request = (Map)ctx.get("request");//得到request
        Map session = ctx.getSession();//得到会话
        Map application = ctx.getApplication();//得到应用程序

       
        request.put("welcome", "欢迎进入Struts2的世界!");
        session.put("hello", "hi,banseon welcome!");
       
        Integer count = (Integer)application.get("count");
        if(null == count){
            count =1;
        }else
            count++;
        application.put("count", count);
        return SUCCESS;
    }
}
------------------------------------------------------------------------------------------------

想必看到这里大家可能就有点糊涂了。其实webwork框架把作用域对象封装到

ActionContext中直接将request,session,Application还原成了Map集合并封装到

该类中。并为此提供了request.getSession(),request.getApplication()等方法。

如何我们使用其他比较方便。但是对于我们使用JAVAEE中request,session,application

的习惯有很大的不同。所以Strtus2就在相应的jar中做出了调整所以ServletActionContext。

就因此而来了。

当然,这两种用法都是可以直接来操作作用域对象。

怎么使用就看仁者见仁。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值