Struts 1.1,1.2中DispatchAction的用法详解

 

名称解释:
DispatchAction就是在struts-config中用parameter参数配置一个表单字段名,这个字段的值就是最终替代execute被调用的方法. 例如

parameter="method"而request.getParameter("method")="save",其中"save"就是MethodName。struts的请求将根据parameter被分发

到"save"或者"edit"或者什么。但是有一点,save()或者edit()等方法的声明和execute必须一模一样。
    我们今天讲解的例子是第一个页面有两个超链接,这两个超链接都是跳到一个action中的,不用任何判断,分别让它们进行两个不同的操

作。就是分别转到两个不同的页面中去。
    开发工具:Eclipse3.2.1,MyEclipse5.1,Tomcat5.5
一.首先新建一个WEB工程:File-New-Project-MyEclipse-J2EE Projects-Web Project,取名为DispatchTest
二.导入Struts jar包:右键工程名-MyEclipse-Add Struts Capabilities...
  1.在Struts Suport for MyEclipse Web Project 页面中找到Struts specification:此为选择Struts版本,我们以Struts1.2为例介绍。
  2.在Base package for new classes后面修改打包名称,最后一个包名struts最好不要改,一般只改前两个。
  3.其他选项默认。
三.找到工程名/WebRoot/WEB-INF/,下面有struts-config.xml。双击它!!
  1.在如下图所画位置点击右键,选择New-Form,Action and JSP。

2.在Struts1.2 Form Declaration页面的Use case:后面填写一个名称(名称随便写,但最好见名知意)我们这里用test。
  3.在Optional Details 选项卡中选中JSP选项卡,在Create JSP form?前打勾,然后将下面的路径New JSP Path中的/form去掉。点击下一步。
  4.在Superclass中选择org.apache.struts.actions.DispatchAction。
  5.完成。
四.点击如下图所示的Source按钮,进入struts-config.xml的代码设计页面,找到我们刚才生成的那个action,它已经有attribute,input,name,path,scope,type,validate这几个属性,我们要为它再添加一个属性parameter。

我们这里写parameter="action",当然这个"action"也可以是任意名称。
五.点击struts-config.xml下方刚才点击的"Source"按钮左面的Design按钮,点击如下图所示的按钮,然后单击空白处会出现新建JSP页面的对话框。

1.在File Name中修改页面名称。这里我们做的就是跳转后的页面,所以如同此法再做一个。
   2.在我们刚才用于新建JSP也面的JSP-Add JSP Page按钮上面有个Connection-Add Connection按钮,点击它,然后分别在testaction与后来

建的两个页面之间做连线,并分别命名为toone,totwo
六.打开WebRoot下的我们第一个建的JSP页面(test.jsp),在<body></body>标记内添加如下代码:
   <html:link page="/test.do?action=one">去one页面</html:link><br>
   <html:link page="/test.do?action=two">去two页面</html:link>
七.在我们后来建的两个JSP页面的body标记中分别填入this is one|tow page.(这是为了区别两个页面,便于我们检查例子是否成功)
八.在工程名/src/xx.xx.struts.action/下的TestAction中的写如下代码:
   public ActionForward one(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
  TestForm testForm = (TestForm) form;
  return mapping.findForward("toone");
 }

 public ActionForward two(ActionMapping mapping, ActionForm form,
   HttpServletRequest request, HttpServletResponse response) {
  TestForm testForm = (TestForm) form;
  return mapping.findForward("totwo");
 }

   这段代码表示按照action="xx",的xx的值为方法名写的两个方法,分别对应两个超链接要执行的操作。这就免除了判断的麻烦。
九.好了,今天的例子讲解完毕!!运行起来看看吧!!

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值