几种DispatchAction的区别
来源:互联网 发布:刀奴猛将数据 编辑:程序博客网 时间:2024/05/16 06:49
java.lang.Object
org.apache.struts.action.Action
org.apache.struts.actions.DispatchAction
org.apache.struts.actions.LookupDispatchAction(Struts1.1)
org.apache.struts.actions.EventDispatchAction(Struts1.2.9)
org.apache.struts.actions.MappingDispatchAction(Struts1.2)
DispatchAction
public abstract class DispatchAction extends Action
这是一个抽象的Action,它会根据request 中的parameter来执行相应的方法。通个这个Action类可以将不同的Action集中到一个Action文件中来。
struts-config.xml:
<action path="/subscription" type="org.example.SubscriptionAction" name="subscriptionForm" scope="request" input="/subscription.jsp" parameter="method"/>
在Action中要有相应的方法:
public class SubscriptionAction extends DispatchAction {
public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {}
public ActionForward insert(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {}
public ActionForward update(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {}
}
然后可以通过这样的方法来访问你的程序:
http://localhost:8080/myapp/subscription.do?method=delete
http://localhost:8080/myapp/subscription.do?method=insert
http://localhost:8080/myapp/subscription.do?method=update
如果parameter中参数为空,则调用Action中的unspecified方法
LookupDispatchAction
public abstract class LookupDispatchAction extends DispatchAction
通过这个Action抽象类继承DispatchAction,它的相应方法的执行由ActionMapping中parameter属性决定。每个动作实际上就是<html:submit>标签的property属性值。它适合在一个form中有很多按钮,按不同的按钮则执行不同的操作。
struts-config.xml:
<action path="/subscription" type="org.example.SubscriptionAction" name="subscriptionForm" scope="request"
input="/subscription.jsp" parameter="method"/>
ApplicationResources.properties:
button.add=Add Record
button.delete=Delete Record
JSP:
<%@ page pageEncoding="GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html>
<head>
<title>多提交演示</title>
</head>
<body>
<html:form action="subscription">
<html:submit property="method">
<bean:message key="button.add"/>
</html:submit>
<html:submit property="method">
<bean:message key="button.delete"/>
</html:submit>
</html:form>
</body>
</html>
在Action中必须实现getKeyMethodMap方法:
public class SubscriptionAction extends LookupDispatchAction {
protected Map getKeyMethodMap() {
Map map = new HashMap();
map.put("button.add", "add");
map.put("button.delete", "delete");
return map;
}
public ActionForward add(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {}
public ActionForward delete(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {}
}
EventDispatchAction
public class EventDispatchAction extends DispatchAction
通过这个Action抽象类继承DispatchAction,它的相应方法的执行由ActionMapping中parameter属性指定多个动作,中间用逗号(,)分隔。每个动作实际上就是<html:submit>标签的property属性值。它适合在一个form中有很多按钮,按不同的按钮则执行不同的操作。
struts-config.xml:
(parameter中的"recalc=recalculate"意思为<html:submit>标签的property属性值为recalc调用recalculate方法,出于安全考虑能够隐藏后台的业务方法名。"defaule=save"这是可选的,没有配置property属性的<html:submit>标签将调用defaule中设置的方法名,如果defaule没有指定任何参数,则调用Action中的unspecified方法)
<action path="/subscription" type="org.example.SubscriptionAction" name="subscriptionForm" scope="request"
input="/subscription.jsp" parameter="save,back,recalc=recalculate,default=save"/>
JSP:
<%@ page pageEncoding="GBK"%>
<%@ taglib uri="http://struts.apache.org/tags-html" prefix="html"%>
<html>
<head>
<title>多提交演示</title>
</head>
<body>
<html:form action="subscription">
<html:submit property="save" value="保存"/>
<html:submit property="back" value="后退"/>
<html:submit property="recalc" value="重新计算"/>
</html:form>
</body>
</html>
在Action中要有相应的方法:
public class SubscriptionAction extends LookupDispatchAction {
public ActionForward save(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {}
public ActionForward back(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {}
public ActionForward recalculate(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {}
}
MappingDispatchAction
public class MappingDispatchAction extends DispatchAction
它的相应方法的执行由ActionMapping中parameter名决定,注意这里和LookupDispatchAction不同,LookupDispatchAction的相应方法的执行由ActionMapping中parameter属性决定。
struts-config.xml:
<action path="/createSubscription" type="org.example.SubscriptionAction" parameter="create">
<forward name="success" path="/createSubscription.jsp"/>
</action>
<action path="/editSubscription" type="org.example.SubscriptionAction" parameter="edit">
<forward name="success" path="/editSubscription.jsp"/>
</action>
<action path="/saveSubscription" type="org.example.SubscriptionAction" parameter="save"
name="subscriptionForm" validate="true" input="/editSubscription.jsp" scope="request">
<forward name="success" path="/savedSubscription.jsp"/>
</action>
<action path="/deleteSubscription" type="org.example.SubscriptionAction" name="subscriptionForm"
scope="request" input="/subscription.jsp" parameter="delete">
<forward name="success" path="/deletedSubscription.jsp"/>
</action>
<action path="/listSubscriptions" type="org.example.SubscriptionAction" parameter="list">
<forward name="success" path="/subscriptionList.jsp"/>
</action>
在Action中要有相应的方法:
public class SubscriptionAction extends MappingDispatchAction {
public ActionForward create(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {}
public ActionForward edit(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {}
public ActionForward save(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {}
public ActionForward delete(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {}
public ActionForward list(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception {}
}
然后可以通过这样的方法来访问你的程序:
http://localhost:8080/myapp/create.do
http://localhost:8080/myapp/edit.do
http://localhost:8080/myapp/save.do
http://localhost:8080/myapp/delete.do
http://localhost:8080/myapp/list.do
如果parameter中参数为空,则调用Action中的unspecified方法
原文地址 http://www.blogjava.net/lvq810/articles/256662.html
- 几种DispatchAction的区别
- DispatchAction,LookupDispatchAction,MappingDispatchAction 的区别.
- dispatchaction与action的区别
- dispatchaction与action的区别
- DispatchAction和MappingDispatchAction的用法及区别
- struts1 中DispatchAction 与action 的区别,以及DispatchAction的用法含义
- DispatchAction和MappingDispatchAction区别
- 类似于DispatchAction的action
- Struts : DispatchAction 的使用
- DispatchAction的详细说明
- DispatchAction的详细说明
- DispatchAction的详细说明
- DispatchAction的详细说明
- DispatchAction的流程:
- DispatchAction的使用
- DispatchAction的详细说明
- 关于DispatchAction的介绍
- Struts1的DispatchAction()方法
- php 报错 Fatal error: Allowed memory size of 134217728 bytes exhausted
- 数据库角色成员身份
- POJ 2479解题日志——我的第一个解题日志
- iPhone开发经典语录集锦
- opencv 灰度图像增强
- 几种DispatchAction的区别
- to get the most expensive t_SQL
- 在Windows Live Writer中添加CSDN账户
- M_F_C
- 目前出现的ShadowMap实现方式名称
- Silverlight显示日期和时间
- 使用DATETIME型数据的一些心得[等整理]
- SiteLinks现象的实现
- CxImage类的SetPixelColor(y,x,color)和GetPixelColor(y,x)方法的使用