Spring 2.0 整合 struts 1.2 的配置方法
使用IDE:myEclipse
先将所需jar包加入到web-inf文件的lib文件夹下,myEclipse可以自动帮你完成,在这就不多说了。
第一步:
在struts-config .xml配置文件中增加一行如下:
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>
这样在struts中的action配置无须配置class属性,即使配置了也无效。
第二步:
利用 struts的Plug创建spring容器,需在struts-config .xml配置文件配置:
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml"/>
</plug-in>
[color=green]第三步:
因为使用了 spring管理struts的Action,而Action是随HTTP请求启动的,因此,应将Action的作用域配置成Request,为了使用 Request作用域,必须在web.xml文件中添加适当的配置。
其实不配这一项应该也是可以的, 因为默认作用域就是request的。
<!-- spring begin -->
<filter>
<filter-name>requestContextFilter</filter-name>
<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>requestContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- spring end -->[/color]
第四步:
配置spring 的文件:
<bean name="/testAction" class="com.ssh.action.TestAction" scope="request">
<property name="dao" ref="testDao" />
</bean>
<bean id="testDao" class="com.ssh.dao.TestDao"></bean>
struts的action配置如下:
<action-mappings>
<action name="testForm" parameter="action" path="/testAction" validate="false">
<forward name="test" path="/test.jsp"></forward>
</action>
</action-mappings>
* 必须使name属性,name属性值必须和struts-config.xml文件中的<action>标签的path属性值一致
* 建议将scope设置为prototype这样就避免了struts action的线程安全问题
总结,解决了依赖查找,使用依赖注入,它没有侵入性。
完成这个设置后,strus会将截获到的用户请求转发到spring context下的bean,根据bean的name属性来匹配。如果配置default-autowire="byName" ,会更简单一些。
使用IDE:myEclipse
先将所需jar包加入到web-inf文件的lib文件夹下,myEclipse可以自动帮你完成,在这就不多说了。
第一步:
在struts-config .xml配置文件中增加一行如下:
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor"/>
这样在struts中的action配置无须配置class属性,即使配置了也无效。
第二步:
利用 struts的Plug创建spring容器,需在struts-config .xml配置文件配置:
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation"
value="/WEB-INF/applicationContext.xml,/WEB-INF/action-servlet.xml"/>
</plug-in>
[color=green]第三步:
因为使用了 spring管理struts的Action,而Action是随HTTP请求启动的,因此,应将Action的作用域配置成Request,为了使用 Request作用域,必须在web.xml文件中添加适当的配置。
其实不配这一项应该也是可以的, 因为默认作用域就是request的。
<!-- spring begin -->
<filter>
<filter-name>requestContextFilter</filter-name>
<filter-class>org.springframework.web.filter.RequestContextFilter</filter-class>
</filter>
<filter-mapping>
<filter-name>requestContextFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<!-- spring end -->[/color]
第四步:
配置spring 的文件:
<bean name="/testAction" class="com.ssh.action.TestAction" scope="request">
<property name="dao" ref="testDao" />
</bean>
<bean id="testDao" class="com.ssh.dao.TestDao"></bean>
struts的action配置如下:
<action-mappings>
<action name="testForm" parameter="action" path="/testAction" validate="false">
<forward name="test" path="/test.jsp"></forward>
</action>
</action-mappings>
* 必须使name属性,name属性值必须和struts-config.xml文件中的<action>标签的path属性值一致
* 建议将scope设置为prototype这样就避免了struts action的线程安全问题
总结,解决了依赖查找,使用依赖注入,它没有侵入性。
完成这个设置后,strus会将截获到的用户请求转发到spring context下的bean,根据bean的name属性来匹配。如果配置default-autowire="byName" ,会更简单一些。