网站首页
JSP空间
动态资讯
开源项目
技术文档
资源下载
J2EE资源
客户论坛
在线支付
 
  技术文档>>JAVA>>新手入门>>基础入门>查看文档  
  struts心得--dispatchaction使用日记     
  文章作者:未知  文章来源:水木森林  
  查看:88次  录入:管理员--2007-11-17  
 
  struts1.1发布了这么长时间了,我才刚刚开始系统地学习struts的相关知识,经过前一阵潜心研究,对struts1.1中已有的类dispatchaction有了进一步的认识。我将在这里总结一下,希望能对大家有所帮助。
  
  在1.0版本中我们通常都是用execute方法来完成我们对业务逻辑的处理及页面的转发。通常在一个action中我们都只能够完成一种业务逻辑的操作。如果要是完成多个业务逻辑(比如:添加、删除等)功能相近的业务逻辑我们就没有办法了么?答案是否定的,我们可以通过在页面中定义一个隐藏变量,在不同的页面要求处理不同的业务逻辑的时候我们可以赋予这个变量不同的值,并在execute方法中通过对变量值的判断来完成不同的业务逻辑操作。
  
  举例来说,我们首先在页面中定义一个隐藏变量。
  
  <;html:hidden property="operat"/>
  
  然后定义一个javascript函数,我们可以在通过点击提交按钮的时候,在函数体里面修改它的值。
  
  <;script>
  
  function set(key) {
  
  with(document.forms[0]){
  
  operat.value=key;
  
  }
  
  }
  
  <;/script>
  
  当我们点击提交按钮便触发该事件,修改变量的值。
  
  <;html:submit onclick="set('save');">save<;/html:submit>
  
  那我们在后台execute中又如何处理相关逻辑呢?
  
  string operat = myform.getoperat();
  
  if (operat.equals("create")) { ……
  
  if (operat.equals("save")) { ……
  
  很简单吧!虽然说这样做我们可以实现多个业务逻辑在同一个action中实现,可是带来的代价便是代码的冗长,不易理解。
  
  下面我们就要介绍一下dispatchaction类了。它是action的一个子类,它可以实现多个业务逻辑在同一个action当中的实现,而上面的例子在dispatchaction中也就变成了下面的形式:
  
  public actionforward create(
  
  actionmapping mapping,
  
  actionform form,
  
  httpservletrequest request,
  
  httpservletresponse response)
  
  throws exception { ……
  
  public actionforward save(
  
  actionmapping mapping,
  
  actionform form,
  
  httpservletrequest request,
  
  httpservletresponse response)
  
  throws exception { ……
  
  每一种业务逻辑都能在dispatchaction当中找到对应的方法。那么我们如何去实现这样的调用呢?dispatchaction中对struts-config.xml的配置比一般的action配置稍显麻烦,举例来讲:
  
  <;action path="/telconsle" type="com.meng.action.telconsledispatch"
  
  name="telform" scope="request" validate="false" parameter="method"/>
  
  我们在这里指定了parameter的值为method,而当我们请求action的时候我们必须指定method的值来确定去我们想要调用哪个action方法。如:
  
  http://localhost:8080/tsss/telconsle.do?method=save
  
  显然,通过显示链接指定参数值的方法可以达到我们调用方法的目的。然而我们如果不想显示调用的话我们应该怎样处理呢?还记得前面讲过的方法么?我们在页面中定义一个隐藏的变量,然后通过对变量的赋值来确定我们来确定我们将要执行的业务方法。在这里我们可不可以一样这样使用呢?
  
  答案是肯定的,我们当然可以通过定义一个类似于<;html:hidden property="operat"/>的变量,只要对该变量赋上对应dispatchaction中的方法的值来确定我们要调用的业务方法。然而笔者比提倡用struts标签来定义这样的隐含的变量,因为struts标签为动态标签,它可能需要在formbean中定义该属性的get和set方法,而在parameter中定义的值不需要在formbean当中定义get和set方法。笔者建议用html的标准标签<;input>来定义该隐藏变量。因为该标签为静态标签,如果我们该用struts标签的话可能导致页面出错。
 
 
上一篇: struts控制器组件简单介绍    下一篇: 实战jbuilder7+weblogic7存取sql server2000
  相关文档
lesson 1.02 ant的安装和配置(图) 11-17
用rmi建立一个分布式java应用程序详解 11-16
哈希崩溃及避免方法 11-17
基于范型的java函数式编程(一) 11-17
学习java web start 11-17
xfire web服务的单元测试  11-17
j2me综合--j2me应用程序内存优化三招 02-27
ejb设计模式1 11-17
web应用程序的测试与优化概述 11-16
利用缓冲技术提高jsp程序的性能和稳定性 03-31
string转换成integer源码分析 11-17
用java实现http断点续传 11-16
详解用j2ee架构企业级应用 11-17
sort 方法 11-16
用jni实现一个高精度的java计时器 11-17
用java多媒体框架实现自播放 11-16
abs 方法 11-16
理解java swing中的accelerator key 11-17
servlet处理post请求 11-17
你好,jogl - java与opengl的绑定 11-17
返回首页 | 关于我们 | J网章程 | JSP空间合租 | 客服中心 | 免责声明 | 常见问题 | 参观机房
本站主机空间代理至厦门市华众网络科技有限公司
《中华人民共和国增值电信业务经营许可证》
编号:闽B2-20050079
@2005-2008福建JSP技术网 版权所有 闽ICP备05000928号
技术电话:13616026886
邮箱:admin@fjjsp.com 站长QQ,点击这里给我发消息