关于struts如何在action中实现多个处理方法

原本一个action对应一个exctue方法做业务处理,那么是不是很浪费呢?怎么让一个action可以包含多个处理方法呢?
1,继承(a)DispatchAction,(b)MappingDispatchAction,(c)LookupDispatchAction
2,分别适用于什么情况,a,b都可以通过在form的action和link等传递一个参数过去,让struts框架得知需要调用action中哪个方法,但是a的耦合性没有b的好。
3,a的配置文件
  	<action
      attribute="buyForm"
      input="/buy.jsp"
      name="buyForm"
      path="/buy"
      parameter="ope"
      scope="request"
      type="prj11_1.action.BuyAction" /> 
[code=HTML]<html:form action="/buy.do?ope=add">
			insert book : <html:text property="book"/><html:errors property="book"/><br/>
			<html:submit/><html:cancel/>
		</html:form>
		<hr>
		show book:<logic:present name="cart">
				<logic:iterate id="book" name="cart">
					<bean:write name="book"/>
					<html:link action="/buy?ope=delete" paramId="BOOK" paramName="book">delete</html:link>
				</logic:iterate>
		</logic:present>

这段代码就调用a的action。到底区别在哪里呢?<html:link action="/buy?ope=delete> <html:form action="/buy.do?ope=add">就在这里,系统通过add和delete来识别调用的方法,但是jsp必须知道是哪个action。这样不太好。

b的配置文件
<action
      attribute="buyForm"
      input="/buy.jsp"
      name="buyForm"
      path="/add"
      parameter="add"
      scope="request"
      type="prj11_1.action.BuyAction" />
      
        <action
      attribute="buyForm"
      input="/buy.jsp"
      name="buyForm"
      path="/delete"
      parameter="delete"
      scope="request"
      type="prj11_1.action.BuyAction" />

[/code]
<html:form action="/add">
			insert book : <html:text property="book"/><html:errors property="book"/><br/>
			<html:submit/><html:cancel/>
		</html:form>
		<hr>
		show book:<logic:present name="cart">
				<logic:iterate id="book" name="cart">
					<bean:write name="book"/>
					<html:link action="/delete" paramId="BOOK" paramName="book">delete</html:link>
				</logic:iterate>
		</logic:present>

调用了继承b的action通过配置文件,直接可以确定调用那个action方法了。注意parameter="delete"和parameter="add"。

c的配置文件
<action
attribute="lrForm"
input="/lr.jsp"
name="lrForm"
parameter="ope"
path="/lr"
scope="request"
type="prj11_1.action.LrAction" />
c可以用来判断2个不同功能按钮到底怎么做出来。但是要结合资源文件来使用。
jsp页面
<html:form action="/lr"> 
		    account : <html:text property="account"/><br/>
			password : <html:password property="password"/><br/>
			<html:submit property="ope"><bean:message key="info.login"/></html:submit>
			<html:submit property="ope"><bean:message key="info.register"/></html:submit>
		</html:form>


资源文件
info.login=login
info.register=register
action的代码
public class LrAction extends LookupDispatchAction {
	
	protected Map getKeyMethodMap() {
		Map map=new HashMap();
		map.put("info.login","login");
		map.put("info.register","register");
		return map;
	}

	public ActionForward login(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		LrForm lrForm = (LrForm) form;
		return null;
	}
	
	public ActionForward register(ActionMapping mapping, ActionForm form,
			HttpServletRequest request, HttpServletResponse response) {
		LrForm lrForm = (LrForm) form;
		return null;
	}

必须实现getKeyMethodMap