Struts1学习笔记(5)-----用DispatchAction类实现方法的动态分配

     

    学习Struts2的动态分配时一直都分不清这其中的关系,学习Struts1的动态分配也是如此,弄了几天才搞定,不容易啊。


    所谓方法的动态分配指的是在一个Action类中定义了几个方法,然后我们可以请求不同的参数调用相应的方法,这样可以减少配置文件。想要实现这种效果,我们只需要让Action类继承DispatchActionL类,这个类虽然是抽象类,但是却没有像其他类样提供execute方法。


    新建一个类UserForm并让其继承ActionForm类,代码如下所示:

package com.sinosoft.form;
 
import org.apache.struts.action.ActionForm;
 
public class UserForm extends ActionForm {
    private String message;
 
    public String getMessage() {
       return message;
    }
 
    public void setMessage(String message) {
       this.message = message;
    }
   
}


 

     新建一个Action类UserAction并让其继承DispatchAction类,在这个类中自定义了3个方法,代码如下所示:


package com.sinosoft.action;
 
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
 
import org.apache.struts.action.ActionForm;
import org.apache.struts.action.ActionForward;
import org.apache.struts.action.ActionMapping;
import org.apache.struts.actions.DispatchAction;
 
import com.sinosoft.form.UserForm;
 
public class UserAction extends DispatchAction {
 
         public ActionForwardadd(ActionMapping mapping,ActionForm form,HttpServletRequestrequest,HttpServletResponse response){
                   UserFormuserForm=(UserForm) form;
                   userForm.setMessage("你调用了add方法!");
                   returnmapping.findForward("success");
         }
         public ActionForwarddelete(ActionMapping mapping,ActionForm form,HttpServletRequestrequest,HttpServletResponse response){
                   UserFormuserForm=(UserForm) form;
                   userForm.setMessage("你调用了delete方法!");
                   returnmapping.findForward("success");
         }
         public ActionForwardupdate(ActionMapping mapping,ActionForm form,HttpServletRequestrequest,HttpServletResponse response){
                   UserFormuserForm=(UserForm) form;
                   userForm.setMessage("你调用了update方法!");
                   returnmapping.findForward("success");
         }
}


     新建一个Jsp页面DispatchAction.jsp,页面如下所示:


<%@ page language="java"contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib prefix="html"uri="http://struts.apache.org/tags-html"%>   
<%@ taglib prefix="bean"uri="http://struts.apache.org/tags-bean"%> 
<!DOCTYPE html PUBLIC "-//W3C//DTDHTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type"content="text/html; charset=UTF-8">
<title>使用DispathAction类</title>
<script type="text/javascript">
    function submitForm(){
       document.forms[0].action="userAction.do?method=add";
       document.forms[0].submit();
    }
</script>
</head>
<body>
    <html:form action="/4/userAction">
       <table>
           <tr>
              <td><bean:write name="userForm"property="message"></bean:write></td>
           </tr>
           <tr>
              <html:submit value="add"  onclick="submitForm()"></html:submit>
           </tr>
           <tr>
              <html:submit value="update"property="method" ></html:submit>
           </tr>
           <tr>
              <html:submit property="method">delete</html:submit>
           </tr>
       </table>
    </html:form>
</body>
</html>


     在配置文件struts-config.xml里这样配置:


<form-beans>
       <form-bean name="userForm"type="com.sinosoft.form.UserForm"></form-bean>
    </form-beans>
    <action-mappings>
       <action path="/4/userAction"scope="session" parameter="method"  input="/4/DispatchActionDemo.jsp"name="userForm" type="com.sinosoft.action.UserAction">
           <forward name="success"path="/4/DispatchActionDemo.jsp"  />
       </action>


     好了,打开服务器并部署项目,运行DispatchActionDemo.jsp页面,如下所示:


Struts1学习笔记(5)-----用DispatchAction类实现方法的动态分配_第1张图片


     当我们点击“add”按钮时,将提示你调用了add方法:


Struts1学习笔记(5)-----用DispatchAction类实现方法的动态分配_第2张图片


       点击其他按钮也是如此。


Struts1学习笔记(5)-----用DispatchAction类实现方法的动态分配_第3张图片


Struts1学习笔记(5)-----用DispatchAction类实现方法的动态分配_第4张图片


     用这种方法要求我们在Action中定义的方法名要和页面form表单按钮的值相同,所以,如果你想把按钮设置为中文名,那么难道你也要把方法也设置为中文吗?显然是不可能的,下节将解决这个问题。


    这是本人学习的结果,欢迎转载,欢迎交流,但转载务必给出本文章的链接地址:http://blog.csdn.net/youqishini/article/details/7338355,谢谢~





你可能感兴趣的:(html,struts,String,Class,action,import)