spring将service注入到Action中
spring与struts1.x集成
方式一:Action交给spring管理,将业务类注入action
引入
spring-webmvc-struts.jar包到lib下,
struts-config.xml配置:
<action name="StudentForm" path="/StudentList"
parameter="actions"
type="org.springframework.web.struts.DelegatingActionProxy">
<forward name="list" path="/userList.jsp"/>
</action>
spring配置applicationContext.xml:
<bean name="/StudentList" class="com.org.momo.action.StudentAction" scope="prototype">
<property name="studentService" ref="studentService" />
</bean>
注意:保持spring配置的bean name和struts配置的action path一致
StudentAction.java:
private StudentService studentService ;
public StudentService getStudentService() {
return studentService;
}
public void setStudentService(StudentService studentService) {
this.studentService = studentService;
}
注意:加入上面applicationContext.xml里面的action移到applicationContext-action.xml里面时,
1.需在sturts-config.xml配置applicationContext-action.xml加载路径
<plug-in className="org.springframework.web.struts.ContextLoaderPlugIn">
<set-property property="contextConfigLocation" value="classpath*:applicationContext-struts.xml" />
</plug-in>
方式二:请求首先交给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配置applicationContext.xml:
<bean name="/searchAction" class="com.myproject.action.SearchAction" scope="prototype">
<property name="searchService" ref="searchService"/>
</bean>
方式三:Action不交给spring管理,直接在Action中实例化应用上下文,然后通过getBean("xxx"),获取相应业务对象
struts配置struts-config.xml:
<action path="/searchAction" type="com.myproject.action.SearchAction">
<forward name="success" path="/result.jsp"/>
</action>
<action path="/searchAction" type="com.myproject.action.SearchAction">
<forward name="success" path="/result.jsp"/>
</action>
对应的Action处理类:
Actionprivate ApplicationContext context=WebApplicationContextUtils.getWebApplicationContext(this.getServlet().getServletContext());
SearchService searchService=(SearchService)context.getBean("searchService");
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配置文件applicationContext.xml:
<bean id="searchAction" class="com.myproject.action.SearchAction" scope="prototype">
<property name="searchService" ref="searchService"/>
</bean>
<action name="search" class="searchAction" method="searchMax">
<result name="success">/result.jsp</result>
<result name="error">/error.jsp</result>
</action>