Struts2与Spring整合

简介: Struts2学习笔记——Struts2与Spring整合Struts2与Spring整合后,可以使用Spring的配置文件applicationContext.xml来描述依赖关系,在Struts2的配置文件struts.xml来使用Spring创建的bean。

Struts2学习笔记——Struts2与Spring整合

Struts2与Spring整合后,可以使用Spring的配置文件applicationContext.xml来描述依赖关系,在Struts2的配置文件struts.xml来使用Spring创建的bean。

 

1、导入依赖包

除了导入Struts2和Spring的核心库之外,还要导入commons-logging和struts2-spring-plugin包,否则启动会出异常

 

2、web.xml的配置

既然有Struts2,核心拦截器的配置是不可少的

<filter>
     <filter-name>struts2</filter-name>
     <filter-class>org.apache.struts2.dispatcher.FilterDispatcher</filter-class>
</filter>
<filter-mapping>
     <filter-name>struts2</filter-name>
     <url-pattern>/*</url-pattern>
</filter-mapping>

 

通过配置ContextLoaderListener监听器,使容器启动时,自动加载applicationContext配置,

因为它实现了ServletContextListener这个接口,容器启动时会自动执行它实现的方法。

<listener>
     <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>

 

默认情况下,会加载WEB-INF/applicationContext.xml这个文件,我们可以通过配置contextConfigLocation参数改变配置文件的路径

 

 

<context-param>
     <param-name>contextConfigLocation</param-name>
     <param-value>WEB-INF/classes/applicationContext.xml</param-value>
</context-param>

以上配置均在web.xml文件的<web-app></web-app>区域

 

3、测试类

在浏览器请求一个Action方法,在Action方法内向一个对象请求一个List,然后转到index.jsp页面,在页面中输出Action请求到的List。

通过Spring依赖配置,控制Action请求的对象。

首先要编写一个接口,Action方法依赖这个接口,通过调用接口中的方法获取List

public interface IocTestInterface {
     public List getList();
}

下面编写Action类,这个类继承ActionSupport类,并覆盖其中的execute方法,

execute方法执行时,调用实现了上述接口对象的getList方法获取List

public class IocAction extends ActionSupport {
	private IocTestInterface iti;
	private List list;
	
	public List getList() {
		return list;
	}
	public void setList(List list) {
		this.list = list;
	}
	public IocTestInterface getIti() {
		return iti;
	}
	public void setIti(IocTestInterface iti) {
		this.iti = iti;
	}
	
	public String execute() throws Exception {
		this.setList(iti.getList());
		return super.execute();
	}
}

编写用来显示运行结果的jsp文件

遍历list,并将每个元素作为一行来显示

<%@ page language="java" import="java.util.*" pageEncoding="ISO-8859-1"%>
<%@ taglib prefix="s" uri="/struts-tags" %>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  
  <body>
    This is my JSP page. <br><br>
    
    <s:iterator value="list" id="current">
    	<li><s:property value="current"/></li>
    </s:iterator>
    
  </body>
</html>

系统的结构就是这样。下面编写两个实现IocTestInterface接口的类,用来提供数据

public class IocTestImpl implements IocTestInterface {
	public List getList() {
		List l = new ArrayList();
		l.add("abc");
		l.add("def");
		l.add("hig");
		return l;
	}
}

 

public class IocTest2Impl implements IocTestInterface {
	public List getList() {
		List l = new ArrayList();
		l.add("123");
		l.add("456");
		l.add("789");
		return l;
	}
}

4、编写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.0.xsd">
    
    <bean name="IocAction" class="sy.struts2.ioc.IocAction">
    	<property name="iti">
    		<bean class="sy.struts2.ioc.IocTestImpl"></bean>
    	</property>
    </bean>
    
</beans>

文件配置了id为IocAction的bean,路径为刚刚编写的Action类的路径,其中iti对象(请求数据的对象)配置为IocTestImpl(这里使用了匿名bean)

 

5、编写struts.xml配置文件

首先要告知Struts 2运行时使用Spring来创建对象

在<struts></struts>区域加入以下配置

<constant name="struts.objectFactory" value="spring" />

创建package并配置Action

<package name="hs" extends="struts-default">
     <action name="ioc" class="IocAction">
          <result>/index.jsp</result>
     </action>
</package>

 

6、发布并运行

发布后启动Tomcat,用浏览器打开地址http://localhost:8080/StrutsIoc/ioc.action,获得了下面的页面

image

修改spring配置文件applicationContext.xml中配置

<bean name="IocAction" class="sy.struts2.ioc.IocAction">
     <property name="iti">
          <bean class="sy.struts2.ioc.IocTest2Impl"></bean>
     </property>
</bean>

只是将注入到IocAction中的IocTestImpl修改为IocTest2Impl,也就是使用了另一个实现了IocTestInterface接口的类

重启服务器,再次打开刚才的地址

image

这也就是spring的“控制反转”

相关文章
|
3月前
|
XML JSON Java
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
本文介绍了如何使用IntelliJ IDEA和Maven搭建一个整合了Struts2、Spring4、Hibernate4的J2EE项目,并配置了项目目录结构、web.xml、welcome.jsp以及多个JSP页面,用于刷新和学习传统的SSH框架。
92 0
使用IDEA+Maven搭建整合一个Struts2+Spring4+Hibernate4项目,混合使用传统Xml与@注解,返回JSP视图或JSON数据,快来给你的SSH老项目翻新一下吧
|
3月前
|
Java Spring Maven
Struts 2遇见Spring:这个组合如何颠覆你的Web开发?
【8月更文挑战第31天】在现代Web开发中,Struts 2与Spring的结合使用能显著增强应用的模块化和可维护性。本文将介绍如何整合这两个框架,并提供代码示例。首先,在`pom.xml`中添加Struts 2和Spring的依赖,然后在`struts.xml`中配置Struts 2以识别Spring插件。接着,在Spring配置文件中定义bean,并在Struts 2的Action类中使用`@Autowired`注解进行自动注入。
50 0
|
3月前
|
Java 开发者 前端开发
Struts 2、Spring MVC、Play Framework 上演巅峰之战,Web 开发的未来何去何从?
【8月更文挑战第31天】在Web应用开发中,Struts 2框架因强大功能和灵活配置备受青睐,但开发者常遇配置错误、类型转换失败、标签属性设置不当及异常处理等问题。本文通过实例解析常见难题与解决方案,如配置文件中遗漏`result`元素致页面跳转失败、日期格式不匹配需自定义转换器、`&lt;s:checkbox&gt;`标签缺少`label`属性致显示不全及Action中未捕获异常影响用户体验等,助您有效应对挑战。
91 0
|
5月前
|
XML Java Apache
必知的技术知识:HHS整合(Struts2+Spring+Hibernate)
必知的技术知识:HHS整合(Struts2+Spring+Hibernate)
38 0
|
6月前
|
安全 前端开发 Java
学习从Struts迁移到Spring的策略概述
从Struts框架迁移到Spring框架是一个常见的升级路径,主要是为了利用Spring框架提供的更多功能、更好的模块化支持以及更广泛的社区资源。
100 3
|
Java 数据库连接 数据库
JAVA三大框架Struts、hibernate和spring的各自作用是什么?
JAVA三大框架Struts、hibernate和spring的各自作用是什么?
75 0
|
前端开发 安全 Java
Java 最常见的面试题:spring mvc 和 struts 的区别是什么?
Java 最常见的面试题:spring mvc 和 struts 的区别是什么?
139 0
|
Java API Spring
Struts2【整合Spring】
Struts2【整合Spring】
139 0
Struts2【整合Spring】
|
XML 前端开发 Java
Spring与Struts2的整合案例及XML配置的具体使用(四)
Spring与Struts2的整合案例及XML配置的具体使用(四)
400 0
Spring与Struts2的整合案例及XML配置的具体使用(四)
|
开发框架 Java 数据库连接
Struts2+Spring+Hibernate整合步骤
Struts2+Spring+Hibernate是J2EE的最新流行框架。本篇是我搭建这个框架的经验总结。 本方案采用自底向上:Hibernate——>Spring——>Struts2的方式进行整合。具体步骤如下: 1.通过MyEclipse向导,导入实现Hibernate3.2功能:生成会话工厂和hibernate.cfg.xml文件。然后在src中添加log4j.properties文件。 2.通过MyEclipse向导,导入实现Spring2.5功能,生成applicationContext.xml文件。然后将Spring2.0 AOP Liberaries里的asm2.2.3.jar包
174 0
下一篇
无影云桌面