Posted on 2007-12-08 10:49 
探佚 阅读(351) 
评论(0)  编辑  收藏  所属分类: 
Java EE技术  
			 
			
		 
		回顾 org.apache.struts.action.Action 类
<action
   name="accountForm"
   path="/account"
   scope="request"
   type="com.action.AccountAction">
   <forward name="ok" path="/ok.jsp" redirect="true"/>
   <forward name="error" path="/error.jsp"/>
</action>
com.action.AccountAction中的execute()方法会来处理来自account.do的请求
问题:
在JSP中,充当控制层的Servlet我们一般只用来处理一个表单请求,为了能处理不同请求,
我们可以通过判断提交按钮submit来判断不同请求,当然还可以通过重写URL、Hidden等来实现。
而现在我们的Action该怎样来完成这样的要求呢?
不用担心,DispatchAction替我们做好了。
使用步骤:
一、创建Action继承自DispatchAction类,
    DispatchAction类是一个抽象类,它实现了父类(Action)的execute()方法.
二、编写自己的方法,拿增删改查举例
    方法的声明,必须和exectue()方法声明一样,只是方法名不同。 
 public ActionForward add(ActionMapping mapping,
                             ActionForm form,
                             HttpServletRequest request, 
                             HttpServletResponse response) throws Exception {
        return mapping.findForward("ok"); 
    }
    public ActionForward edit(ActionMapping mapping,
                             ActionForm form,
                             HttpServletRequest request, 
                             HttpServletResponse response) throws Exception {
        return mapping.findForward("ok"); 
    }
   public ActionForward del(ActionMapping mapping,
                             ActionForm form,
                             HttpServletRequest request, 
                             HttpServletResponse response) throws Exception {
        return mapping.findForward("ok"); 
    }
三、struts-config.xml中配置
   <action
      name="accountForm"
      parameter="operator"
      path="/account"
      scope="request"
      type="com.action.AccountAction">
      <forward name="ok" path="/ok.jsp" redirect="true"/>
      <forward name="error" path="/error.jsp"/>
   </action>
   和普通Action的唯一区别就是添加一个属性parameter
   其值用来保存传递给Action的不同请求。
   operator=add时:DispatchAction会自动调用add()方法来处理请求,edit、del同理。
 
四、最后要做的和JSP中很像,在请求DispatchAction时把Parameter传递过去,
         
         其途径无非是上面说到的Hidden,URL重写等手段.