struts1.x与spring集成方式
方式一:Action交给spring管理,将业务类注入action
引入spring-webmvc-struts.jar包到lib下,
struts配置:
<action path="/searchAction" type="org.springframework.web.struts.DelegatingActionProxy" parameter="method"> <forward name="success" path="/result.jsp"/> </action>
spring配置:
<!--这里SearchAction继承了DelegatingActionProxy--> <bean name="/searchAction" class="com.myproject.action.SearchAction" scope="prototype"> <property name="searchService" ref="searchService"/> </bean>
注意:保持spring配置的bean name和struts配置的action path一致
方式二:请求首先交给ActionServlet,然后给org.springframework.web.struts.DelegatingRequestProcessor,由这个请求处理器根据请求路径从spring容器获取action对象
struts-config.xml
<action path="/searchAction">
<!--注意到没有?这里没有配置type属性--> <forward name="success" path="/result.jsp"/> </action> <controller> <set-property property="processorClass" value="org.springframework.web.struts.DelegatingRequestProcessor"/> </controller>
spring配置:
<bean name="/searchAction" class="com.myproject.action.SearchAction" scope="prototype"> <property name="searchService" ref="searchService"/> </bean> |
方式三:Action不交给spring管理,直接在Action中实例化应用上下文,然后通过getBean("xxx"),获取相应业务对象
struts配置遵照传统方式
<action path="/searchAction" type="com.myproject.action.SearchAction"> <forward name="success" path="/result.jsp"/> </action> |
private ApplicationContext context=WebApplicationContextUtils.getWebApplicationContext(this.getServlet().getServletContext()); SearchService searchService=(SearchService)context.getBean("searchService"); |
struts2.x与spring集成
struts.properties 配置
struts.objectFactory=spring #指定struts的action类实例由spring生成
struts-config.xml配置
<action name="search" class="searchAction" method="searchMax"> <result name="success">/result.jsp</result> <result name="error">/error.jsp</result> </action> spring配置 <bean id="searchAction" class="com.myproject.action.SearchAction" scope="prototype"> <property name="searchService" ref="searchService"/> </bean>
以上标红的两处须保持一致。