DispatchAction使用:
页面有以下四个请求:
<html:link action="/user.do?method=add">添加新用户</html:link><br>
<html:link action="/user.do?method=delete">删除用户</html:link><br>
<html:link action="/user.do?method=update">修改用户</html:link><br>
<html:link action="/user.do?method=query">查询用户</html:link><br>
struts-config.xml相应的配置:
<action path="/user"
type="cn.itcast.action.UserAction"
parameter="method">
</action>
UserAction中的代码:
private ActionForward query(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
}
private ActionForward update(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
}
private ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
}
private ActionForward add(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
}
从上面可知,四个请求交给同一个Action处理(默认应该调用Action的execute方法),但通过在请求url中加入一个属性(method)
该属性名与struts-config.xml中相应Action 的parameter属性值一样 该属性值与对应Action类中某个方法名一样即将该请求交给该方法处理
DispatchAction 的优点:
实行了在同一个 Action 类中完成一组相关的业务操作,以达到减少重复编程,使程序更加便于维护。
DispatchAction 的缺点: 因为多个请求共用一个 action 节点, 所以多个请求使用一个 name 属性, 即多个请求使用一个 ActionForm,
进而使用同样的验证规则, 这在很多时候是不适用的.
MappingDispatchAction使用:
页面有以下四个请求:
<html:link action="/add">添加新用户</html:link><br>
<html:link action="/delete">删除用户</html:link><br>
<html:link action="/update">修改用户</html:link><br>
<html:link action="/query">查询用户</html:link><br>
struts-config.xml相应的配置:
<action path="/add"
type="cn.itcast.action.UserAction"
parameter="add"></action>
<action path="/delete"
type="cn.itcast.action.UserAction"
parameter="delete"></action>
<action path="/update"
type="cn.itcast.action.UserAction"
parameter="update"></action>
<action path="/query"
type="cn.itcast.action.UserAction"
parameter="query"></action>
UserAction中的代码:
与上面DispatchAction的UserAction代码一样
从上面可知,它是在 struts-config.xml中action中指定parameter属性,通过该属性值去找相应的处理方法。但它可以共用一个ActionForm,也可不共用。
这样就解决了DispatchAction 的缺点,但却增加了struts-config.xml中的代码量。
所以应根据具体情况选择使用哪个
分享到:
相关推荐
在Struts框架中,`DispatchAction`和`MappingDispatchAction`是两种常见的控制器组件,用于处理用户请求。它们是Action接口的实现类,主要用于映射HTTP请求到特定的方法,从而实现业务逻辑的分发。 首先,让我们...
通过以上分析可以看出,`DispatchAction`、`MappingDispatchAction`和`LookupDispatchAction`都是解决单个Action处理多种业务逻辑的有效手段。其中,`DispatchAction`相对简单直接,适用于处理较为简单的场景;`...
- Struts框架中的Action是处理用户请求的核心组件,有多种类型,如普通Action、SwitchAction、IncludeAction、ForwardAction、DispatchAction、MappingDispatchAction,每种都有特定的用途。 3. **Hibernate HQL与...
本文将深入探讨三种不同的`Action`实现方式:继承自`Action`、继承自`DispatchAction`以及继承自`MappingDispatchAction`。每种方式都有其独特的应用场景和配置方法。 #### 一、继承自Action 如果希望自定义的类...
- **MappingDispatchAction**:类似于 DispatchAction,但使用更复杂的映射规则来确定要执行的方法。 - **防止表单重复提交**:通过使用令牌(token)机制来防止用户的重复提交操作。 - **Struts 验证框架**:...
- **使用DispatchAction:** 可以根据不同的方法调用不同的处理器。 - **使用MappingDispatchAction:** 动态选择Action执行。 - **使用LookupDispatchAction:** 支持根据请求参数动态选择Action执行。 - **...