spring 2.0.6整合struts 1.2.9

本文介绍了Spring与Struts框架整合的三种方法:通过ActionSupport类、使用DelegatingRequestProcessor及将StrutsAction委托给Spring。每种方法都在struts-config.xml与applicationContext.xml中进行了详细配置说明,并展示了如何在Action类中获取Spring管理的bean。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

       

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

 

 

<context-param>
		<param-name>contextConfigLocation</param-name>
		<param-value>/WEB-INF/applicationContext.xml</param-value>
	</context-param>
	<listener>
		<listener-class>
			org.springframework.web.context.ContextLoaderListener
		</listener-class>
	</listener>

 

 

 

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

 

 a.在struts-config.xml中


 

<action path="/login" name="loginForm" scope="request"
                        type="com.demo.struts.actions.LoginAction"
                        input="/login.jsp">
                        <forward name="success" path="/welcome.jsp" />
                        <forward name="failure" path="/login.jsp" />
</action>

 

 

 b.在applicationContext.xml中

 

<bean id="userDAO" class="com.demo.hibernate.dao.UserDAO">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>

<bean name="/login" class="com.demo.struts.actions.LoginAction">
		<property name="userDAO">
			<ref local="userDAO" />
		</property>
	</bean>
  

 

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

 

 

UserDAO userDAO=(UserDAO)getWebApplicationContext().getBean("userDAO");

 

 

 

 

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

 

a.在struts-config.xml中


 

<action path="/login" name="loginForm" scope="request"
                                               input="/login.jsp">
                        <forward name="success" path="/welcome.jsp" />
                        <forward name="failure" path="/login.jsp" />
</action>

 
<controller processorClass="org.springframework.web.struts.DelegatingRequestProcessor" />

 

 

 b.在applicationContext.xml中

 

<bean id="userDAO" class="com.demo.hibernate.dao.UserDAO">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>

<bean name="/login" class="com.demo.struts.actions.LoginAction">
		<property name="userDAO">
			<ref local="userDAO" />
		</property>
	</bean>

  

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

 

protected UserDAO userDAO;

	Logger log = Logger.getLogger(this.getClass());

	public UserDAO getUserDAO() {
		return userDAO;
	}

	public void setUserDAO(UserDAO userDAO) {
		this.userDAO = userDAO;
	}

 

 

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

 

a.在struts-config.xml中


 

<action path="/login" name="loginForm" scope="request"
                        type="org.springframework.web.struts.DelegatingActionProxy"
                        input="/login.jsp">
                        <forward name="success" path="/welcome.jsp" />
                        <forward name="failure" path="/login.jsp" />
                </action>

 

 

 b.在applicationContext.xml中

 

<bean id="userDAO" class="com.demo.hibernate.dao.UserDAO">
		<property name="sessionFactory">
			<ref local="sessionFactory" />
		</property>
	</bean>

<bean name="/login" class="com.demo.struts.actions.LoginAction">
		<property name="userDAO">
			<ref local="userDAO" />
		</property>
	</bean>

  

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

 

protected UserDAO userDAO;

	Logger log = Logger.getLogger(this.getClass());

	public UserDAO getUserDAO() {
		return userDAO;
	}

	public void setUserDAO(UserDAO userDAO) {
		this.userDAO = userDAO;
	}

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值