spring将service注入到Action中(s1和s2)

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配置的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>

相关推荐