关于struts1的DispatchAction的应用

999朵玫瑰 2009-08-28 04:40:13
MyAction extends DiapatchAction
MyAction 里改写了 execute 方法:
	public final ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {
//do something;
}


TestAction extends MyAction
method2()是自定义的 TestAction 中的方法:
public ActionForward method2(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){
//do something;
}


请问,我jsp页面调用method2(),execute方法会不会被执行?
action="/MyProject/testAction.do?method=method2"
...全文
208 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
godfather521 2011-08-31
  • 打赏
  • 举报
回复
你的 action 继承 DispatchAction 了吗?
Betterjava 2009-08-30
  • 打赏
  • 举报
回复
我认为应该不会执行excute方法,因为继承DispatchAction的类会根据你请求参数,通过配置文件来找相应的方法的,你那参数是method2 应该是只执行method2方法
wdlisoft 2009-08-30
  • 打赏
  • 举报
回复
在config中加入parameter="method" 就OK了, 不要管那个execute方法.DispatchAction的原理是重载了execute方法.
derta2009 2009-08-30
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 husheng86 的回复:]
应该是回的,不管是什么Action,都会先执行execute方法,DispatchAction的原理是重载了execute方法,在execute方法中根据你配置的parameter获取方法名,再使用动态代理来执行对应的方法。
[/Quote]

是这样
awusoft 2009-08-30
  • 打赏
  • 举报
回复
不能.因为你覆盖了DiapatchAction中的execute 方法,你可以把这个方法的返回值弄成:

return super.execute(......);

这样子,在进入其它的方法之前,你可以做一个统一的事情
Windy_snowy 2009-08-30
  • 打赏
  • 举报
回复
会啊,excute方法是默认的,你不想它执行的话就把它拿掉嘛
inthirties 2009-08-30
  • 打赏
  • 举报
回复
dispatchAction也是普通的action,不过是在execute里处理了parametr然后用reflect到不同的method里。
inthirties 2009-08-30
  • 打赏
  • 举报
回复
[Quote=引用楼主 onlyonelove 的回复:]
MyAction extends DiapatchAction
MyAction 里改写了 execute 方法:
Java codepublicfinal ActionForward execute(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response) {//do something; }

TestAction extends MyAction
method2()是自定义的 TestAction 中的方法:
Java codepublic ActionForward method2(ActionMapping mapping, ActionForm form,
HttpServletRequest request, HttpServletResponse response){//do something; }

请问,我jsp页面调用method2(),execute方法会不会被执行?
HTML codeaction="/MyProject/testAction.do?method=method2"
[/Quote]

如果定义了自己execute是肯定会调用到的。

不过就起不到dispathcaction的功能了,所以这样要还能够保证dispatch的功能的话,需要在exexute方法里调用一下super.execute


lcj_up 2009-08-30
  • 打赏
  • 举报
回复
自己弄一下吧。。。。
我现在不是很清楚。。。。。
没有这样试过。。。。
Betterjava 2009-08-30
  • 打赏
  • 举报
回复
你这问题我刚才弄错了 会执行excute方法 因为只要重写Action的excute的方法你使用DispatchAction它就会执行execute方法,DispatchAction是继承Action的,如果没有重写execute方法,使用DispatchAction就会根据传来的参数,通过配置文件来找相应的方法了.
vinkinyu 2009-08-29
  • 打赏
  • 举报
回复
在你的struts配置文件里面的那个action标签里有个parameter属性,只要加上parameter="method"就OK了
qq774097676 2009-08-29
  • 打赏
  • 举报
回复
这种问题最好的解决方法是自己试一下 很多的东西依靠猜测是没有用的 要自己亲自去尝试
TeBieChi 2009-08-29
  • 打赏
  • 举报
回复
用dispatchaction 不如用lookupdispatchaction

后者国际化也比前者方便

具体的使用还是去百度一下吧 肯定能搜索到的
【如鱼饮水】 2009-08-28
  • 打赏
  • 举报
回复
配置里好像还要加
parameter="method"
好吃的松子 2009-08-28
  • 打赏
  • 举报
回复
应该是回的,不管是什么Action,都会先执行execute方法,DispatchAction的原理是重载了execute方法,在execute方法中根据你配置的parameter获取方法名,再使用动态代理来执行对应的方法。
传奇 2009-08-28
  • 打赏
  • 举报
回复
顶一下,这样的问题问了也是白问。
自己动手,丰衣足食。
真的,有些不懂得东西在尝试中慢慢就懂了。。
Jerry-He 2009-08-28
  • 打赏
  • 举报
回复
你自己试试不就知道了啊

81,094

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧