名词解释:
LookupDispatchAction继承DispatchAction, 用于对同一个页面上的多个submit按钮进行不同的响应。其原理是,首先用MessageResource
将按钮的文本和ResKey相关联,例如button.save=保存;然后再复写getKeyMethodMap(), 将ResKey和MethodName对应起来, 例如map.put
("button.save", "save"); 其配置方法和DispatchAction是一样的,一下是详细使用说明.
我们今天要讲的是LookupDispatchAction的例子。本例目的是第一个页面test.jsp上有一个表单,这个表单中有个submit。分别点击不同
的submit会跳转到两个不同的页面one.jsp,two.jsp。我的开发工具是Eclipse3.2.1,MyEclipse5.1,导入struts1.2。好了,我们现在开始。
步骤:
一.新建一个WEB工程,我取名为:lookupdispatchactiontest。
二.导入struts1.2,并在Base package for new classes:中修改报名,我改为:org.nanfeng.struts
三.在struts-config.xml总添加一套三合一(jsp,action,form)。并在Use case:中起名字,我起为:test。然后Create JSP form,并
将/test.jsp前面的/form去掉。下一步
四.在Superclass:总选中:org.apache.struts.actions.LookupDispatchAction。完成。
五.再新建两个JSP页面,分别取名为one.jsp,two.jsp。
六.在testForm与one.jsp,two.jsp页面之间分别创建forward,取名为toone,totwo。
七.给struts-config.xml的testAction中添加一个新属性:parameter="action"。
八.修改test.jsp中<body>标记中的内容为:
<html:form action="/test" method="post">
<html:submit property="action">
<bean:message key="toone"/>
</html:submit><br>
<html:submit property="action">
<bean:message key="totwo"/>
</html:submit>
</html:form>
九.修改testAction中的内容为:
public ActionForward one(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
TestForm testForm = (TestForm) form;
return mapping.findForward("toone");
}
public ActionForward two(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
TestForm testForm = (TestForm) form;
return mapping.findForward("totwo");
}
@Override
protected Map getKeyMethodMap() {
Map map = new HashMap();
map.put("toone", "one");
map.put("totwo", "two");
return map;
}
十.修改ApplicationResources.properties中的内容为:
toone:one
totwo:two
十一.完成,部署到Tomcat中运行看看吧!!最好再修改一下one.jsp和two.jsp这两个页面,容易看效果。
注:
下面给大家解释一下上面的代码:
第八步.submit后面的property中的属性值action就是struts-config.xml中testAction里新添加的属性parameter的值,这里它相当于一个
参数名。message后面的key的值toone,totwo,表示的就是对于action的参数值。它的作用是在testAction中的getKeyMethodMap()方法中找到
对应的方法名,也就是本例中的one()和two()。另外一定不能忘记的是在getKeyMethodMap()中将页面传过来的参数和方法名关联之后必须还要
在ApplicationResources.properties中也将它们关联起来。
第九步.one()和two()这两个方法就是原来action中的excute()方法,这里就避免如在excute()方法中做无休止的判断了。
protected Map getKeyMethodMap()方法就是将test.jsp中传过来的参数与上面两个方法名关联起来。
分享到:
相关推荐
默认情况下,Struts1的动作类只有一个`execute()`方法,但使用`LookupDispatchAction`时,可以定义多个处理特定请求的方法,每个方法对应一个特定的请求参数。 二、配置与使用 1. 配置struts-config.xml 首先,需要...
LookupDispatchAction使用Dispatcher来解析请求参数,找到正确的方法执行。 7. **视图渲染**: 在验证和业务处理完成后,Struts会根据Action的返回结果,结合struts-config.xml中的配置,选择合适的JSP页面或其他...
例如,可以在一个 Action 中使用 Java 的 `switch` 语句或 Map 来实现动态地调用不同的处理方法: ```java public class CustomSwitchAction extends Action { private Map, Method> methodMap = new HashMap(); ...
`LookupDispatchAction` 提供了基于方法名的请求映射,而不是基于参数或路径的映射,这使得代码结构更加清晰,易于维护。 1. **LookupDispatchAction 的工作原理** - `LookupDispatchAction` 实例化后,会根据配置...
下面将详细介绍LookUpDispatchAction的使用方法以及其在Struts应用中的重要性。 首先,让我们理解LookUpDispatchAction的核心概念。通常,一个Action类对应一个或多个业务逻辑方法,每个方法处理特定的用户请求。...
其中的LookupDispatchAction类是允许你指定一个具有多个方法的类,每一个方法的调用都基于配置文件中指定的一个特殊请求参数值,利用该参数值反向查询资源绑定,并将它与类中的一个方法进行匹配。从这些功能可以看出...
在Web开发中,特别是使用Struts框架时,经常会遇到一个问题:当一个简单的组件(如购物车)需要执行多种操作(如添加商品、删除商品、修改商品数量等),而Struts的`Action`类通常只有一个`execute`方法时,如何设计...
在 Struts1 中,使用 LookupDispatchAction 动作可以处理含有多个 submit 的 form。但是,这种方式需要访问属性文件,还需要映射,比较麻烦。从 Struts1.2.9 开始,加入了 EventDispatchAction 动作,该类可以通过 ...
在处理一个表单(form)中存在多个submit按钮的情况时,Struts2提供了一种优雅的方式来区分用户点击了哪个按钮,而无需像Struts1那样使用额外的动作类(如LookupDispatchAction或EventDispatchAction)。 在传统的...
struts1学习资料:里面包含struts源码工程 ActionServlet DispatchAction Action LookUpDispatchAction的用法 还包含html logic bean tiles标签的详细使用方法和validate验证框架的具体案例
- **使用LookupDispatchAction:** 支持根据请求参数动态选择Action执行。 - **使用ForwardAction:** 实现简单的页面转发。 - **使用IncludeAction:** 实现页面包含。 - **使用SwitchAction:** 基于条件选择...
在这个例子中,可能会使用`LookupDispatchAction`,这是一个特殊类型的Action,它允许根据用户提交的按钮值(submit标签的name属性)来调用不同的业务方法。 在用户界面设计中,静态验证是先于服务器端验证的一步,...
`DispatchAction`和`LookupDispatchAction`是Struts中的特殊动作,前者允许基于请求参数来调用不同的方法,后者则是在`DispatchAction`基础上进一步细化,根据请求的参数值查找并执行相应的方法。 `DynaActionForm`...
8. JSP页面使用Struts标签显示数据或进行其他操作。 ### 二、控制器组件 #### 1. struts-config.xml 这是Struts的核心配置文件,定义了Action、ActionForm、ActionMapping等元素,用于指导请求处理和视图渲染。 #...
LookupDispatchAction则能根据提交表单按钮的名称来调用相应的方法。 在Struts的工作流程中,一旦Action执行完毕,它会返回一个ActionForward对象。ActionForward代表一个URL,指示下一步应该去哪里,可以是另一个...
- **LookupDispatchAction**:基于表单提交的按钮名称调用不同方法。 5. **Taglib** Struts提供了自定义标签库(Taglib),如`struts-bean`、`struts-html`、`struts-logic`和`struts-nested`,以及`struts-tiles...
1. **LookupDispatchAction**: 这个文件可能涉及到Struts框架中的`LookupDispatchAction`,这是一个用于处理多视图的Action,它可以根据用户请求的参数来决定调用哪个业务方法。这在实现复杂的视图跳转和逻辑控制时...
- **LookupDispatchAction**: - 类似于`DispatchAction`,但支持通过查找(lookup)来确定要执行的方法。 #### 十、Struts之Tiles - **Tiles概述**: - 是Struts的一个扩展插件,用于管理Web应用中的布局和模板...
Struts 2.0还提供了一种方式来改变默认调用的方法,这类似于Struts 1.x的`LookupDispatchAction`。在`struts.xml`中,可以直接指定Action的执行方法,例如: ```xml <result name="success">/HelloWorld.jsp ...