为什么要用DispatchAction类 ?
在Struts中你要尽可能的不用Action类,因为他们让你的项目变得臃肿,你可以使用org.apache.struts.actions.DispatchAction类来完成业务逻辑所需要的相关操作集中到一个Action类中,在继承DispatchAction后,你不再是重新定义execute()方法,而是编写你自己的业务方法,execute()方法在DispatchAction抽象类定义。
例如我们可以继承DispatchAction来定义一个AccountAction,在当中集中管理一些与账号相关的操作,如下:
package onlyfun.caterpillar;
import javax.servlet.http.*;
import org.apache.struts.action.*;
import org.apache.struts.actions.*;
public class AccountAction extends DispatchAction {
public ActionForward login(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception { // login相关的操作 ...... }
public ActionForward logout(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception { // logout相关的操作 ...... }
public ActionForward method1(ActionMapping mapping,
ActionForm form,
HttpServletRequest request,
HttpServletResponse response) throws Exception { // method1相关的操 ...... } .....}
我们不再重新定义execute()方法,而是定义我们自己的login()、logout()等方法,这些方法接收与execute()相同的参数,并且也传回ActionForward对象。使用DispatchAction时,我们要在struts-config.xml定义:
path="/account"
type="onlyfun.caterpillar.AccountAction"
parameter="method"
name="userForm">
name="greeting"
path="/login/greeting.jsp"/>
主要就是在parameter的属性上,我们指定以method请求参数来指定我们所要使用的方法,例如下面的网址将会执行AccountAction的login()方法:http://localhost:8080/HelloStruts/account.do?method=login&name=caterpillar&password=1234注意在请求参数中,我们包括了method=login来指定执行login()方法,同样的,如果你要执行logout()方法,则如下
http://localhost:8080/HelloStruts/account.do?method=logout
分享到:
相关推荐
一个比较简单的struts的dispatchAction 类的入门案例,适合初学者理解dispatchAction
在页面中用js传递执行方法参数,传递到后台执行, 在你用的Action类中的方法名前加“run“及可被调用。
自习struts时做时,大家可以互相交流一下
4.2. 为什么要用Struts1.x 8 4.3. Struts1.x的validate框架是如何验证的? 8 4.4. 说下Struts的设计模式 8 4.5. 谈谈你mvc的理解 8 4.6. struts1.2和struts2.0的区别?如何控制两种框架中的单例模式? 9 4.7. struts...
73.2. 为什么要用Spring? 76 73.3. spring工作机制或工作原理 76 73.4. Spring是什么?根据你的理解详细谈谈你的见解。 76 73.5. 项目中如何体现Spring中的切面编程,具体说明。 77 73.6. 项目中用到的Spring中的切...
8.1.2 为什么要使用JUnit 8.2 建立JUnit的开发环境 8.2.1 下载JUnit 8.2.2 配置JUnit 8.3 JUnit的使用方法 8.3.1 继承TestCase 8.3.2 编写测试方法 8.3.3 编写断言 8.4 JUnit的新特性 8.4.1 改变测试方法的命名方式 ...
8.1.2 为什么要使用JUnit 8.2 建立JUnit的开发环境 8.2.1 下载JUnit 8.2.2 配置JUnit 8.3 JUnit的使用方法 8.3.1 继承TestCase 8.3.2 编写测试方法 8.3.3 编写断言 8.4 JUnit的新特性 8.4.1 改变测试方法的命名方式 ...
8.1.2 为什么要使用JUnit 8.2 建立JUnit的开发环境 8.2.1 下载JUnit 8.2.2 配置JUnit 8.3 JUnit的使用方法 8.3.1 继承TestCase 8.3.2 编写测试方法 8.3.3 编写断言 8.4 JUnit的新特性 8.4.1 改变测试方法的命名方式 ...
8.1.2 为什么要使用JUnit 8.2 建立JUnit的开发环境 8.2.1 下载JUnit 8.2.2 配置JUnit 8.3 JUnit的使用方法 8.3.1 继承TestCase 8.3.2 编写测试方法 8.3.3 编写断言 8.4 JUnit的新特性 8.4.1 改变测试方法的命名方式 ...
多个submit的特殊应用。通常选择dispatchaction,当然Struts2应该都可以解决。
9.1 Struts内置类DispatchAction 13 9.2 Struts内置类ForwardAction 13 9.3 Struts令牌机制,防止重复提交 13 9.4 StrutsAction单态陷阱,请谨慎使用全局变量 13 9.5 Struts异常处理 13 第10章 struts中使用国际化...
使用BlobByteArrayType字段类型后,为什么我们就可以象一般的字段类型一样操作Blob字段呢?可以确定的一点是:BlobByteArrayType不可能逾越Blob天生的操作方式,原来是BlobByteArrayType数据类型本身具体数据访问...
使用本地切片一个自以为是的React钩子,将减速器用于本地状态以类型安全的方式使用来自类的API 与集成如何使用它 const [ state , dispatchAction ] = useLocalSlice ( { slice : "my slice" , // optional - will ...
struts1.2 图片文件上传(单个/动态多个) 单个的采用通用Action 需要ActionForm的,而动态多个上传是采用动态代理类(DispatchAction) 希望对大家有用,另JSP在IE测试通过,JS我就不再处理了!
java8 源码 联系方式 手机:15018735217 Email: QQ号:31342108 个人信息 邓海二/男/1986 本科/广州大学计算机系 工作年限:8年 ...DispatchAction 的思路自己写了一个只有一个 Java 文件的控制器,还有一个U
要全部下载下载一起解压,此部分为第一部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 ...
要全部下载下载一起解压,此部分为第二部分 带有书签,清华大学出版社 第1章 JAVA WEB开发简介 1.1、WEB发展历程 1.2、企业开发架构 1.3、JAVA EE架构 1.4、JAVA EE核心设计模式 1.5、Struts开发框架 ...
我就不多说了,都是用输入流进行先读,然后用输出流去写,唯一不同的是我用的是缓冲输入输出流 byte[] buffer = new byte[8192]; while ((bytesRead = bis.read(buffer, 0, 8192)) != -1) { bos.write(buffer, 0,...
17.5.3、DispatchAction 17.6、验证框架 附录A:实用工具 18.1、JavaMail 18.1.1、James邮件服务器的下载及配置 18.1.2、JavaMail简介及配置 18.1.3、发送普通邮件 18.1.4、发送带附件的HTML风格邮件 18.2、...
17.5.3、DispatchAction 17.6、验证框架 附录A:实用工具 18.1、JavaMail 18.1.1、James邮件服务器的下载及配置 18.1.2、JavaMail简介及配置 18.1.3、发送普通邮件 18.1.4、发送带附件的HTML风格邮件 ...