DispachAction是动态的指定Action。也就是说在view层的不同的请求和url参数被ActionServlet所截获,
并在struts-config.xml中根据请求得到参数不同来指定(调用)Action中不同的方法,根据方法的返回值来跳转相应的页面。
这样可以很好的解决Action膨胀的问题。以前我们继承struts中的Action只处理一种请求,也就是说不同的请求会有相应的Action类,这样Action类就会越来越多,就会照成Action膨胀。用DispachAction会根据请求的不同来指定调用哪个方法,这样可以有效的解决Action膨胀的问题。
如何使用DispachAction:
1.写一个UserAction继承DispachAction
写一个addUser方法添加用户
//添加User
public ActionForward addUser(ActionMapping mapping, ActionForm arg1,
HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
new UserService().saveUser(new User());
return mapping.findForward("ok");
}
写一个deleteUser方法删除用户
//删除User
public ActionForward deleteUser(ActionMapping mapping, ActionForm arg1,
HttpServletRequest arg2, HttpServletResponse arg3) throws Exception {
return mapping.findForward("delok");
}
2.在页面上
<form action="User.do?command=addUser" method="post">
username:<input type="text" name="username"><br>
password:<input type="password" name="password">
<input type="submit" value="提交">
</form>
<a href="User.do?id=1&command=deleteUser">删除id为1的用户</a>
3.在struts-config.xml配置
<action-mappings>
<action path="/User"
parameter="command"
type="com.jxau.action.UserAction">
<forward name="ok" path="/add_ok.jsp"></forward>
<forward name="delok" path="/del_ok.jsp"></forward>
</action>
</action-mappings>
总结:用DispatchAction可以动态的控制Action,根据一个模板一个Action的原则来管理一个业务逻辑。有效的防止Action膨胀的问题