spring2.0整合struts1

spring2.0整合struts1(转载)

文章来源:http://hi.baidu.com/liuzhe041/blog/item/e12251dcf2ffe053ccbf1ad2.html


spring 和struts整合 有3种方式,推荐用第三种。
下面一一介绍,不管使用哪种方式,都需要在web.xml 中配置 spring的 监听器

Java代码 
  1. <context-param>  
  2.         <param-name>contextConfigLocation</param-name>  
  3.         <param-value>/WEB-INF/applicationContext.xml</param-value>  
  4.     </context-param>  
  5.     <listener>  
  6.         <listener-class>  
  7.             org.springframework.web.context.ContextLoaderListener  
  8.         </listener-class>  
  9.     </listener>  

 

 

 

第一种:使用 Spring 的 ActionSupport 类整合 Struts

 

 a.在struts-config.xml中


Java代码 
  1. <action path="/login" name="loginForm" scope="request"  
  2.                         type="com.demo.struts.actions.LoginAction"  
  3.                         input="/login.jsp">  
  4.                         <forward name="success" path="/welcome.jsp" />  
  5.                         <forward name="failure" path="/login.jsp" />  
  6. </action>  
  7.   
  8.    

 

 b.在applicationContext.xml中

 

Xml代码 
  1. <bean id="userDAO" class="com.demo.hibernate.dao.UserDAO">  
  2.         <property name="sessionFactory">  
  3.             <ref local="sessionFactory" />  
  4.         </property>  
  5.     </bean>  
  6.   
  7. <bean name="/login" class="com.demo.struts.actions.LoginAction">  
  8.         <property name="userDAO">  
  9.             <ref local="userDAO" />  
  10.         </property>  
  11.     </bean>  
  12.     

 

c.在action中 使用下面的方式得到bean

 

 

Java代码 
  1. UserDAO userDAO=(UserDAO)getWebApplicationContext().getBean("userDAO");  

 

 

第二种:使用 Spring 的 DelegatingRequestProcessor 覆盖 Struts 的 RequestProcessor

a.在struts-config.xml中


Java代码 
  1. <action path="/login" name="loginForm" scope="request"  
  2.                                                input="/login.jsp">  
  3.                         <forward name="success" path="/welcome.jsp" />  
  4.                         <forward name="failure" path="/login.jsp" />  
  5. </action>  
  6.   
  7.    
  8. <controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />  

 

 

 b.在applicationContext.xml中

 

Xml代码 
  1. <bean id="userDAO" class="com.demo.hibernate.dao.UserDAO">  
  2.         <property name="sessionFactory">  
  3.             <ref local="sessionFactory" />  
  4.         </property>  
  5.     </bean>  
  6.   
  7. <bean name="/login" class="com.demo.struts.actions.LoginAction">  
  8.         <property name="userDAO">  
  9.             <ref local="userDAO" />  
  10.         </property>  
  11.     </bean>  

  

c.在action中 使用下面的注入属性的方式得到bean ,直接使用 userDAO.xxx 调用userDAO中的方法

 

Java代码 
  1. protected UserDAO userDAO;  
  2.   
  3.     Logger log = Logger.getLogger(this.getClass());  
  4.   
  5.     public UserDAO getUserDAO() {  
  6.         return userDAO;  
  7.     }  
  8.   
  9.     public void setUserDAO(UserDAO userDAO) {  
  10.         this.userDAO = userDAO;  
  11.     }  

 

 

第三种:将 Struts Action 管理委托给 Spring 框架        

a.在struts-config.xml中

Java代码 
  1. <action path="/login" name="loginForm" scope="request"  
  2.                         type="org.springframework.web.struts.DelegatingActionProxy"  
  3.                         input="/login.jsp">  
  4.                         <forward name="success" path="/welcome.jsp" />  
  5.                         <forward name="failure" path="/login.jsp" />  
  6.                 </action>  

 

 

 b.在applicationContext.xml中

 

Xml代码 
  1. <bean id="userDAO" class="com.demo.hibernate.dao.UserDAO">  
  2.         <property name="sessionFactory">  
  3.             <ref local="sessionFactory" />  
  4.         </property>  
  5.     </bean>  
  6.   
  7. <bean name="/login" class="com.demo.struts.actions.LoginAction">  
  8.         <property name="userDAO">  
  9.             <ref local="userDAO" />  
  10.         </property>  
  11.     </bean>  

  

c.在action中 使用下面的注入属性的方式得到bean ,直接使用 userDAO.xxx 调用userDAO中的方法

 

Java代码 
  1. protected UserDAO userDAO;  
  2.   
  3.     Logger log = Logger.getLogger(this.getClass());  
  4.   
  5.     public UserDAO getUserDAO() {  
  6.         return userDAO;  
  7.     }  
  8.   
  9.     public void setUserDAO(UserDAO userDAO) {  
  10.         this.userDAO = userDAO;  
  11.     }  

 



Gavin

你可能感兴趣的:(spring2.0整合struts1)