Struts中继承ACTION问题

STRUTS中ACTION继承ACTION和DispatchAction有什么区别啊?能介绍下DispatchAction吗?... STRUTS中 ACTION继承ACTION和DispatchAction有什么区别啊?能介绍下DispatchAction吗? 展开
 我来答
z499470647
推荐于2016-01-30 · TA获得超过703个赞
知道小有建树答主
回答量:309
采纳率:0%
帮助的人:330万
展开全部
action是负责跳转的。

Controller:Struts提供了一个核心的控制器ActionServlet,通过这个核心的控制器来调用其他用户注册了的自定义的控制器Action,
自定义Action需要符合Struts的自定义Action规范,还需要在struts-config.xml的特定配置文件中进行配置,接收JSP输入字段形成
Action form,然后调用一个Action控制器。Action控制器中提供了model的逻辑接口。

ServletController(ActionServlet和自定义的Action),配置Ctrler需要配置struts-config.xml,通过客户端form的action来查找调用
相应的action,自定义action中的mapping对应的是配置文件中的forward标签,通过forward的path属性来跳转到相应的路径。
一、Struts预定义的Action类

1、不继承Struts预定义的Action类
(1)Thread safe 线程安全
(2)override execute(4 parameters)

注意:在使用继承Struts预定义的Action类,一定不要覆盖execute方法,否则会导致无法调用自定义Action相应方法。

2、DispatchAction类
(org.apache.struts.actions.DispatchAction)

DispatchAction类是Action类的子类,他提供了有实现的execute方法。

我们写的自定义Action类,可以继承DispatchAction类,但不要覆盖execute方法,可以在自定义类中写反回值和参数表都与execute方法相同的方
法,可以通过在struts-congfig.xml中为这个action的配置中添加一个参数,来判断调哪一个方法,实际上DispatchAction类就是通过反射机制,
通过form中参数调用了自定义Action中的方法,当然这些方法的定义要符合规范,使用继承DispatchAction类的自定义的Action类,也就会共享同
一的Action路径。

注意:使用继承DispatchAction类的自定义的Action,只会匹配一个action路径,只能共享一个ActionForm,如果加上校验,会产生form表单的参
数不一致的情况,会导致校验无法通过。
3、MappingDispatchAction类
(org.apache.struts.actions.MappingDispatchAction)

MappingDispatchAction类是DispatchAction的子类,他和DispatchAction不同点就是可以去匹配多个action路径,这样也就是结决了共
用ActoinForm的校验问题了,多个Action的路径使用同一的自定义Action类,这样就不用共享同一个ActionForm,也就不会有校验问题了。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式