更新时间:2022-10-02 23:01:32
struts与spring整合方式有三种:
方式一:通过Spring的ActionSupport类实现。
方式二:通过Sping的DelegatingRequestProcessor类覆盖struts的requestprocessor实现。
方式三:通过Sping的DelegatingActionProxy类实现,将struts action管理委托给spring框架。
相同点:以上三种方式都需要在struts的配置文件struts-config.xml中注册spring的ContextLoaderPlugIn插件。即:
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="/WEB-INF/applicationContext.xml"/>
</plug-in>
不同点:
方式一:使用Spring提供的ActionSupport类,只需要使用Action继承Spring的ActionSupport类,即可实现Spring与struts的整合,使用起来简单方便,但是struts的Action与Spring耦合在一起,并且Struts的Action不在spring的控制之中,这样如果更换别的IOC容器,或想使用Spring的AOP都是比较困难的,而且如果是多个动作放在一个Action中,则这种方式就无能为了了!
方式二:使用Spring的DelegatingRequestProcessor类,需要在Struts的配置文件中,使用DelegatingRequestProcessor代替Struts的RequestProcessor类,并在Spring的配置文件中动作映射对应的Bean,可以很方便的转换而不用修改代码,这种方式的缺点是依赖于Struts的RequestProcessor类。
方式三:使用Spring的DelegatingActionProxy类,需要在Struts的配置文件中,定义动作映射的type属性为DelegatingActionProxy而不是类的实际名称,并在Spring的配置文件中定义和Struts配置文件动作映射对应的Bean,这种方式和Struts耦合性最小。
注:三者中,使用Spring的DelegatingActionProxy类来整合Spring和Struts的方式最为强大和灵活。
方式三的实例
login.jsp
/StrutsLoginDemo/WebRoot/WEB-INF/struts-config.xml
/StrutsLoginDemo/WebRoot/WEB-INF/applicationContext.xml
/StrutsLoginDemo/src/com/qdu/sun/struts/action/LoginAction.java
本文转自linzheng 51CTO博客,原文链接:http://blog.51cto.com/linzheng/1080803