深入struts框架学习:struts核心类ActionMapping特殊类DispatchAction类

         ActionMapping的一个实例对应了struts-config.xml文件中的一个<action>标签。其比较重要的几个属性有path,type,name,scope,input,forward,unknown等。

         path为其访问路径,type是action类型,name为ActionForm的name,scope是将信息设置到request或者session中。这些都比较简单。重点说一下forward和input属性。

         forward属性,Action为逻辑控制器,如果我们有转向信息而没有逻辑代码时,我们一般的做法是建立一个Action,里面只写一句转向信息的代码,如果有很多这样的Action,那么操作将非常繁琐,这时可以利用forward属性来配置其转向信息,而不用建立一个action类。使用forward属性有利于体现配置文件的完整性,应尽量使用。

         unknown属性,这个是一个缺省配置,当输入的url找不到时,会跳转到unknown页面,unknown属性设置是一个页面的路径。

         input属性,这个属性和异常有关系,当出现错误时,我们原来是跳转到错误页面,用input可以实现同样的效果。看代码。

<action path="/login_struts_tag" 
type="com.bjpowernode.struts.LoginAction"
name="loginForm"                
scope="request"        
input="/login_struts_tag.jsp"        
>
<forward name="success" path="/login_success.jsp" />
<!-- 
<forward name="error" path="/login_error.jsp"/>
 -->                
</action>

         在Action中代码则改变为Return mapping.getInputForward();,和原来return mapping.findForward("error");效果一样。


DispatchAction类

         DispatchAction类继承自Action类,是一种特殊的Action类。在用Action的时候,有的时候会创建很多的Action类,这时候可以用DispatchAction类来将不同的Action类化成不同的方法。即用一个DispatchAction类可以完成多个方法。

         在用这个类的时候,首先要在struts-config.xml文件中的action标签多写一个parameter属性,因为在界面写访问路径的时候要带有参数,才能在DispatchAction中判断调用什么方法。配置代码为

    <action path="/user/user_maint"

             type="com.bjpowernode.drp.web.actions.UserAction"

             name="userForm"

             scope="request"

             parameter="command"

   parameter的含义为命令的关键字是什么,即在界面代码action ="user_maint.do?command=del";这个关键字可以替换。parameter中的值不能是execute和perform。

   在得到del后,在DispatchAction中写的方法名称必须和这个一样。才能调用到这个方法上。

   在DispatchAction中还有一个unspecified方法,即界面不传任何参数的时候调用到这个方法上。

    DispatchAction中的execute方法,如果需要覆盖,必须显示调用。


  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值