Struts中继承ACTION问题
STRUTS中ACTION继承ACTION和DispatchAction有什么区别啊?能介绍下DispatchAction吗?...
STRUTS中 ACTION继承ACTION和DispatchAction有什么区别啊?能介绍下DispatchAction吗?
展开
1个回答
展开全部
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,也就不会有校验问题了。
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,也就不会有校验问题了。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询