IDEA下使用maven集成Struts2和Spring
初学java,在用struts做了几个项目之后,觉得手动集成业务组件有些麻烦了,是时候上spring了。先把struts和spring集成下,体验一把spring的IoC看看再说。
从网上找了不少资料,总感觉写的不是很全面,对于我这个新手来说不是很友好。好在捣鼓了几个小时之后,顺利跑起来了一个简单的demo。尽量详细的记录一下,以便和大家交流。
环境&版本
jdk:1.7
ide:IDEA 2016.02
tomcat:7
maven:3.3.9
由于这里的IDE用的是IDEA,所以可能要熟悉一些基本操作,例如配置服务器、启动、调试等。如果有不熟悉的,可以先看下这篇教程:https://github.com/judasn/IntelliJ-IDEA-Tutorial
IDEA中创建maven工程
这里简单介绍下在IDEA中创建maven工程:一般的create project流程,只是在选择类型的时候先勾选create from archetype,选择maven中的maven-archetype-webapp,剩下的暂时随便填填也可以。参考图:
注意:这里只是介绍在ide中如何创建maven工程,后面的测试工程会用到github上的工程。
导入项目
struts为spring提供了示例工程,所以在此我就直接用示例工程了。传送门:https://github.com/apache/struts-examples
这个工程里面有很多子工程,我导入IDEA后,按照上面的README没有编译成功。所以还是将里面的spring-struts拷贝出来,单独做成一个项目,然后跑成功的。将这个文件夹提出来后项目如下图所示:
pom.xml
工程中的代码无需多改,唯一要改动的就是pom.xml了,我的大部分时间也是耗在了这个上面。下面给出经过尝试之后可用的pom配置:
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.ebank.hfcenter.rel</groupId>
<artifactId>sprint-struts</artifactId>
<packaging>war</packaging>
<version>1.0-SNAPSHOT</version>
<name>sprint-struts Maven Webapp</name>
<url>http://maven.apache.org</url>
<dependencies>
<!-- junit-->
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!--spring-->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>4.0.2.RELEASE</version>
</dependency>
<!--struts2-->
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.1.2</version>
</dependency>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-spring-plugin</artifactId>
<version>2.3.1.2</version>
</dependency>
</dependencies>
<build>
<finalName>sprint-struts</finalName>
</build>
</project>
修改完成后,等待IDEA自动下载对应jar包即可。
启动
正如上节所说,改了pom.xml之后,其他文件不用修改,就可以直接启动该项目了。启动成功后的若干截图如下:
首页:
填写信息页:
保存成功页:
粗浅理解
虽然没有改动项目代码,但是还是需要理解一下的。对这个项目,我的大致理解如下:
1. 在web.xml中配置了启动spring容器的listener:
<?xml version="1.0" encoding="UTF-8"?>
<web-app id="WebApp_ID" version="2.4"
xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd">
<display-name>Spring Struts 2</display-name>
<welcome-file-list>
<welcome-file>index.jsp</welcome-file>
</welcome-file-list>
<listener>
<listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<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>
</web-app>
通过这个listener,在项目启动时就会启动spring容器,然后加载默认的配置文件:/WEB-INF/applicationContext.xml;
2. 在applicationContext.xml中,配置了由spring容器管理的业务组件(JavaBean),例如在本工程中就配置了一个bean:
<?xml version="1.0" encoding="UTF-8"?>
<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.xsd">
<bean id="editService" class="org.apache.struts.edit.service.EditServiceInMemory"/>
</beans>
配置了这个bean后,在后续的业务流程中,如果有和bean名相同的业务组件,就会有spring自动的管理,而不必使用硬编码的方式写在程序中。
3. 后续的流程就和单纯的struts差不多了,http request-》action-》调用业务组件-》返回,只不过其中action中的业务组建由spring管理,会方便很多。
搞定!
上一篇: idea集成maven的相关配置
下一篇: Maven安装与IDEA的集成