struts1的DispatchAction类
DispatchAction类用于分发的Action,主要的好处是把一些功能类似的Action放到一个Action中,通过传入的不同参数来觉得执行哪个操作.
????DispatchAction类是一个抽象类,它实现了父类(Action)的execute()方法,所以它的子类就不用来实现这个方法了,只需要专注与实际操作的方法。
1.首先要一个DispatchAction的子类,
public?class?AccountAction?extends?DispatchAction?{
????public?ActionForward?login(ActionMapping?mapping,
??????????????????????????????ActionForm?form,
??????????????????????????????HttpServletRequest?request,
??????????????????????????????HttpServletResponse?response)
????throws?Exception?{
????????//?行一些Login的
??????????????return?mapping.findForward("success");??
????}
一定要注意在DispatchAction中你想执行的操作,都必须要有统一的参数(ActionMapping?mapping,?ActionForm?form,HttpServletRequest?request,?HttpServletResponse?response),是一个规定.
2.接下来是配置struts-config.xml
?
????<action?path="/login"??type="examples.AccountAction"?
?????????????name="logonForm"
?????????????scope="request"
?????????????parameter="action"
?????????????input="/pages/dispatch1.jsp">
???????<forward?name="success"?path="/pages/success.jsp"?/>
????</action>?
?这里需要注意的就是parameter属性的值,因为这个值要和页面传来的参数对应.
3.再来看看JSP页?pages/dispatch1.jsp
?
<%@?taglib?uri="/tags/struts-html"?prefix="html"?%>
<html:link?href="/DispathActionTest/login.do?action=login">login</html:link><br>?
????这里要注意几点,首先??后面的KEY要和struts-config.xml中的parameter相同,还有它的VALUE要是你在action的一个方法名字,这里方法名为login,?那么在程序运行时就是调用login的操作,如果是logout,那程序就调用logout的操作.