名称解释:
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的值为方法名写的两个方法,分别对应两个超链接要执行的操作。这就免除了判断的麻烦。
九.好了,今天的例子讲解完毕!!运行起来看看吧!!