在1.0版本中我们通常都是用execute方法来完成我们对业务逻辑的处理及页面的转发。通常在一个Action中我们都只能够完成一种业务逻辑的操作。如果要是完成多个业务逻辑(比如:添加、删除等)功能相近的业务逻辑我们就没有办法了么?答案是否定的,我们可以通过在页面中定义一个隐藏变量,在不同的页面要求处理不同的业务逻辑的时候我们可以赋予这个变量不同的值,并在execute方法中通过对变量值的判断来完成不同的业务逻辑操作。
举例来说,我们首先在页面中定义一个隐藏变量。
<html:hidden property="operAt"/>
然后定义一个JavaScript函数,我们可以在通过点击提交按钮的时候,在函数体里面修改它的值。
<SCRIPT>
function set(key) {
    with(document.forms[0]){
      operAt.value=key;
    }
}
</SCRIPT>
当我们点击提交按钮便触发该事件,修改变量的值。
<html:submit οnclick="set('save');">SAVE</html:submit>
那我们在后台execute中又如何处理相关逻辑呢?
String operAt = myForm.getOperAt();
if (operAt.equals("create")) { ...
if (operAt.equals("save")) { ...
虽然说这样做我们可以实现多个业务逻辑在同一个Action中实现,可是带来的代价便是代码的冗长,不易理解。
DispatchAction是仅次于Action,使用最频繁的Action,用于同一个表单中有两个请求提交按钮时,但提交需要的逻辑处理完全不同的情况。
DispatchAction可支持多个处理逻辑。
实现DispatchAction的步骤:
1在JSP页面中增加隐藏字段
<input type="hidden" name="method" value="add"/>
<input type="submit" value='<bean:message key="button.add"/>'  onClick="method.value='add'"/>        
<input type="submit" value='<bean:message key="button.modify"/>' onClick="method.value='modify'"/>        
<input type="reset" value='<bean:message key="button.reset"/>'/>
2在struts-config.xml中的action配置中,增加parameter属性,用于指定参数名
<action path="/login" type="lee.LoginAction" name="loginForm"
   scope="request" validate="true" input="/login.jsp" parameter="method">
   <forward name="success" path="/welcome.jsp"/>
</action>
3在Action中的实现
public class LoginAction extends DispatchAction
{
    public ActionForward add(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response)throws Exception
    {
        System.out.println("增加");
        request.setAttribute("method" , "增加");
        return mapping.findForward("success");
    }
    public ActionForward modify(ActionMapping mapping, ActionForm form,
       HttpServletRequest request, HttpServletResponse response)throws Exception
    {
        System.out.println("修改");
        request.setAttribute("method" , "修改");
        return mapping.findForward("success");
    }
}

Struts DispatchAction相关推荐

  1. Liferay Portal额外研究-银狐999

    Liferay Portal额外研究(一):初步在新Tomcat下部署 开发者在线 Builder.com.cn 更新时间:2008-03-19作者:银狐999 来源:CSDN 本文关键词: 部署 t ...

  2. 内置的struts Action 类----DispatchAction

    一.用途:通常在一个Action中只能完成一种业务操作,例如用户的增.删.改得放在三个Action 中,但是如果我想把这三个业务都放在一个Action中,想通过URL后跟参数来区分,即通过http:/ ...

  3. 使用struts中的DisPatchAction的时候需要用到的jar包

    在配置struts-config的时候,使用同样的输入数据的action时候,可以将这些action配制成一个,在这里需要调用的jar包名为struts-extras-1.3.10.jar.这个jar ...

  4. Struts2与Struts的区别

    从Struts2的发展过程来看,Struts2继承了Struts与WebWork的血脉,Struts2取两者之精华,形成新德框架,但是struts2还是更多的继承了struts的设计思想,并加入了We ...

  5. Spring整合Struts的几种最常见方式

    Spring实例Action的两种方式: 1.DelegatingActionProxy类整个Action由Spring实例 2.DelegatingRequestProcessor类extends ...

  6. 使用DispatchAction类,为你的系统减肥!

    在Struts中你要尽可能的不用Action类,因为他们让你的项目变得臃肿,你可以使用org.apache.struts.actions.DispatchAction类来完成业务逻辑所需要的相关操作集 ...

  7. SSH框架--Struts的故事

    到目前为止,我们经历了从静态页面到JSP,再到JSP+Servlet+JavaBean的学习过程,又在前面学习了Struts技术. 没有人知道宇宙是怎样开始的.有人推论... 啊,错了,跳到魔兽正史了 ...

  8. Struts ActionForm简单理解

    要想明确struts的控制流程以及它核心API的实现原理(比方 Action/DispatchAction/ActionForm的实现原理),玩转struts1.2的关键就是可以玩转 ActionFo ...

  9. 11月25日struts培训日记

    今天对struts的一些细节进行了详细讲解: 一个ActionMapping对象对应struts-config.xml文件中的一个<action>元素,读ActionMapping类的AP ...

最新文章

  1. 转载iOS开发中常见的警告及错误
  2. MySQL登录时ERROR 1045:Access denied for user ‘root’@’localhost’ (using password: YES)
  3. Windows下Libvirt Java API使用教程(二)- 接口使用说明
  4. (0063)iOS开发之SVN server的搭建
  5. 【Flutter】StatelessWidget 组件 ( Container 组件 | BoxDecoration 组件 | Text 组件 | Icon 组件 )
  6. Zimbra的Web客户端国际字体的控制机制及定制方法
  7. python删除文件一行数据、不使用临时文件_python下tempfile 临时文件删除问题
  8. java 时间戳和PHP时间戳 的转换 php time()
  9. 查看perl的模块版本
  10. agx 安装ros opencv_Linux下配置深度学习开发环境(及ros)
  11. Windows64位 python3.6安装pyHook
  12. Python运行环境详细总结
  13. Excel 2010 SQL应用052 将英文字母转换为小写字母
  14. AAC 音频数据结构实例分析:
  15. echarts 仿支付宝基金七日年化折线图
  16. java 465发送邮件_465端口发送邮件失败
  17. Spring框架两大核心特征的基本理解
  18. Java 中的三目运算符
  19. 维基百科怎么做创建词条?如何创建维基百科?海外营销_一秒推媒体平台
  20. 超详细的AD8031ARZ介绍,就在这里

热门文章

  1. C++赋值运算符和拷贝构造函数区别
  2. C语言多种方法实现同一个功能
  3. C语言函数调用的原理
  4. cad版本在线转换_一套某中学的弱电系统拓扑设计方案(CAD版本)
  5. 23-26 Python File方法、OS文件/目录方法、异常处理、内置函数
  6. SQLite Select 语句(http://www.w3cschool.cc/sqlite/sqlite-select.html)
  7. 窗口分析函数_4_计算累加值
  8. 线性代数之行列式矩阵术语中英对照
  9. srs推flv流_srs流媒体服务器(simple rtmp server)如何支持h265
  10. Window系统下C/C++程序毫秒和微秒级程序运行时间的获取方法