王朝网络
分享
 
 
 

Struts心得—DispatchAction使用日记

王朝java/jsp·作者佚名  2006-01-31
宽屏版  字体: |||超大  

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标签的话可能导致页面出错。

怎么样?通过上面的论述,您是否能够对DistpatchAction有了初步了解呢?关于DispatchAction用法小弟还是出此体验,有什么不足之处还希望各位大虾能批评指点!

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
>>返回首页<<
推荐阅读
 
 
频道精选
 
静静地坐在废墟上,四周的荒凉一望无际,忽然觉得,凄凉也很美
© 2005- 王朝网络 版权所有