Struts 2 + Spring集成示例

下载它– Struts2-Spring-Integration-Example.zip

在本教程中,它显示了Struts 2和Spring之间的集成。

1.项目结构

这是本教程的项目文件夹结构。

Struts 2 Spring integration example

2. Struts 2 +弹簧插件

要集成Struts 2和Spring,请获取“ struts2-spring-plugin-xxx.jar ”库并将其包括在您的项目类路径中。

pom.xml

<!-- Struts 2 -->
        <dependency>
                <groupId>org.apache.struts</groupId>
	        <artifactId>struts2-core</artifactId>
	        <version>2.1.8</version>
        </dependency>

	<!-- Spring framework --> 
	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring</artifactId>
		<version>2.5.6</version>
	</dependency>

	<dependency>
		<groupId>org.springframework</groupId>
		<artifactId>spring-web</artifactId>
		<version>2.5.6</version>
	</dependency>

	<!-- Struts 2 + Spring plugins -->
	<dependency>
                 <groupId>org.apache.struts</groupId>
	         <artifactId>struts2-spring-plugin</artifactId>
	         <version>2.1.8</version>
         </dependency>

3. Spring Listener

web.xml文件中配置Spring侦听器“ org.springframework.web.context.ContextLoaderListener ”。

web.xml

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>
  <display-name>Struts 2 Web Application</display-name>
  
  <filter>
	<filter-name>struts2</filter-name>
	<filter-class>
         org.apache.struts2.dispatcher.ng.filter.StrutsPrepareAndExecuteFilter
        </filter-class>
  </filter>
  
  <filter-mapping>
	<filter-name>struts2</filter-name>
	<url-pattern>/*</url-pattern>
  </filter-mapping>
 
  <listener>
    <listener-class>
      org.springframework.web.context.ContextLoaderListener
    </listener-class>
  </listener>
  
</web-app>

3.注册Spring Bean

applicationContext.xml文件中注册所有Spring Bean,Spring侦听器将自动找到该xml文件。

applicationContext.xml

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
 
	<bean id="userBo" class="com.mkyong.user.bo.impl.UserBoImpl" />
	
	<bean id="userSpringAction" class="com.mkyong.user.action.UserSpringAction">
		<property name="userBo" ref="userBo" />	
	</bean>
 
</beans>

UserBo.java

package com.mkyong.user.bo;

public interface UserBo{

	public void printUser();
	
}

UserBoImpl.java

package com.mkyong.user.bo.impl;

import com.mkyong.user.bo.UserBo;

public class UserBoImpl implements UserBo{

	public void printUser(){
		System.out.println("printUser() is executed...");
	}
	
}

UserSpringAction.java

package com.mkyong.user.action;

import com.mkyong.user.bo.UserBo;

public class UserSpringAction{

	//DI via Spring
	UserBo userBo;
	
	public UserBo getUserBo() {
		return userBo;
	}

	public void setUserBo(UserBo userBo) {
		this.userBo = userBo;
	}

	public String execute() throws Exception {
		
		userBo.printUser();
		return "success";
		
	}
}

5. Struts.xml

在这里声明所有关系。

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
"-//Apache Software Foundation//DTD Struts Configuration 2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
 
<struts>
 	<constant name="struts.devMode" value="true" />
 	
	<package name="default" namespace="/" extends="struts-default">
		
		<action name="userAction" 
			class="com.mkyong.user.action.UserAction" >
			<result name="success">pages/user.jsp</result>
		</action>
		
		<action name="userSpringAction" 
			class="userSpringAction" >
			<result name="success">pages/user.jsp</result>
		</action>
		
	</package>
	
</struts>

6.演示

现在,所有Struts 2和Spring的集成工作都已完成,现在请参阅以下用例访问Spring的“ userBo ” bean。

  • 案例1:让Spring充当Struts 2 Action类,并访问Spring的bean。
  • 情况2:在Struts 2 Action类中访问Spring的bean。

情况1

在此示例中, userSpringAction充当Struts 2 Action类,您可以使用常规Spring的方式对Spring的userBo bean进行DI。

//struts.xml
<action name="userSpringAction" 
	class="userSpringAction" >
	<result name="success">pages/user.jsp</result>
</action>

//applicationContext.xml
<bean id="userSpringAction" class="com.mkyong.user.action.UserSpringAction">
	<property name="userBo" ref="userBo" />	
</bean>

要访问此操作,请使用URL: http:// localhost:8080 / Struts2Example / userSpringAction

情况二

默认情况下,Spring侦听器启用“ 通过匹配bean名称进行自动装配 ”。 因此,它将通过setUserBo()自动将Spring的“ userBo ” bean传递到UserAction中。 参见下面的Struts 2 Action:

Spring的自动装配功能可以更改为名称 (默认), 类型自动构造函数 ,您可能需要查阅此Struts 2 Spring插件文档

UserAction.java

package com.mkyong.user.action;

import com.mkyong.user.bo.UserBo;
import com.opensymphony.xwork2.ActionSupport;
 
public class UserAction extends ActionSupport{

	//DI via Spring
	UserBo userBo;
	
	public UserBo getUserBo() {
		return userBo;
	}

	public void setUserBo(UserBo userBo) {
		this.userBo = userBo;
	}

	public String execute() throws Exception {
		
		userBo.printUser();
		return SUCCESS;
		
	}
}

要访问此操作,请使用URL: http:// localhost:8080 / Struts2Example / userAction

WebApplicationContextUtils
另外,您可以使用Spring的通用WebApplicationContextUtils类直接获取Spring的bean。

package com.mkyong.user.action;

import org.apache.struts2.ServletActionContext;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.context.support.WebApplicationContextUtils;

import com.mkyong.user.bo.UserBo;
import com.opensymphony.xwork2.ActionSupport;
 
public class UserAction extends ActionSupport{

	public String execute() throws Exception {
		
		WebApplicationContext context =
			WebApplicationContextUtils.getRequiredWebApplicationContext(
                                    ServletActionContext.getServletContext()
                        );
		
		UserBo userBo1 = (UserBo)context.getBean("userBo");
		userBo1.printUser();

		return SUCCESS;
		
	}
}

一篇冗长而乏味的文章,请确保下载完整的项目源代码以进行练习。

参考

  1. Struts 2 Spring插件文档
  2. Struts + Spring集成示例

翻译自: https://mkyong.com/struts2/struts-2-spring-integration-example/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值