spring将service注入到Action中(s1和s2)
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配置的beanname和struts配置的actionpath一致
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>