1. 环境
eclipse 版本: Eclipse Mars2 4.5
jdk 版本: 1.8
maven 版本: apache-maven 3.3.9zhnegs
这是主要的开发工具版本, SSH 的各种 jar 包版本就不列举了.
2. 依赖传递与依赖冲突的解决
在整合开始前需要先介绍依赖传递与依赖冲突的问题;
依赖传递:
如图. 可以看到在 pom 文件中只是导入了 struts 的核心包, 在项目中去将核心包依赖的 jar 包全部都导入进来, 这种依赖关系就会产生依赖传递.
依赖冲突: 那如何会冲突呢, 在整合 SSH 框架中, 项目采用的包会有重复, 那么就会产生问题, 你希望导入的包并没有导入.
jar 包
解决方案:
第一声明原则: 先导入有高版本的 jar 包
- <dependencies>
- <!-- spring-beans-4.2.4 -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>4.2.4.RELEASE</version>
- </dependency>
- <!-- spring-beans-3.0.5 -->
- <dependency>
- <groupId>org.apache.struts</groupId>
- <artifactId>struts2-spring-plugin</artifactId>
- <version>2.3.24</version>
- </dependency>
路径最短优先原则: 即放弃依赖导入, 直接单独导入该包
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- <version>4.2.4.RELEASE</version>
- </dependency>
排除原则:
- <dependency>
- <groupId>org.apache.struts</groupId>
- <artifactId>struts2-spring-plugin</artifactId>
- <version>2.3.24</version>
- <exclusions>
- <exclusion>
- <groupId>org.springframework</groupId>
- <artifactId>spring-beans</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
版本锁定原则:
- <properties>
- <spring.version>4.2.4.RELEASE</spring.version>
- <hibernate.version>5.0.7.Final</hibernate.version>
- <struts.version>2.3.24</struts.version>
- </properties>
- <!-- 锁定版本, struts2-2.3.24,spring4.2.4,hibernate5.0.7 -->
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>${spring.version}</version>
- </dependency>
- </dependencies>
- </dependencyManagement>
3.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/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <groupId>com.lsd.maven-web</groupId>
- <artifactId>maven-SSH</artifactId>
- <version>0.0.1-SNAPSHOT</version>
- <packaging>war</packaging>
- <!-- 属性 -->
- <properties>
- <spring.version>4.2.4.RELEASE</spring.version>
- <hibernate.version>5.0.7.Final</hibernate.version>
- <struts.version>2.3.24</struts.version>
- </properties>
- <!-- 锁定版本, struts2-2.3.24,spring4.2.4,hibernate5.0.7 -->
- <dependencyManagement>
- <dependencies>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-aspects</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-ORM</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-Web</artifactId>
- <version>${spring.version}</version>
- </dependency>
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-core</artifactId>
- <version>${hibernate.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.struts</groupId>
- <artifactId>struts2-core</artifactId>
- <version>${struts.version}</version>
- </dependency>
- <dependency>
- <groupId>org.apache.struts</groupId>
- <artifactId>struts2-spring-plugin</artifactId>
- <version>${struts.version}</version>
- </dependency>
- </dependencies>
- </dependencyManagement>
- <!-- 依赖管理 -->
- <dependencies>
- <!-- spring -->
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-context</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-aspects</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-ORM</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-test</artifactId>
- </dependency>
- <dependency>
- <groupId>org.springframework</groupId>
- <artifactId>spring-Web</artifactId>
- </dependency>
- <!-- hibernate -->
- <dependency>
- <groupId>org.hibernate</groupId>
- <artifactId>hibernate-core</artifactId>
- </dependency>
- <!-- 数据库驱动 -->
- <dependency>
- <groupId>MySQL</groupId>
- <artifactId>MySQL-connector-java</artifactId>
- <version>5.1.6</version>
- <scope>runtime</scope>
- </dependency>
- <!-- c3p0 -->
- <dependency>
- <groupId>c3p0</groupId>
- <artifactId>c3p0</artifactId>
- <version>0.9.1.2</version>
- </dependency>
- <!-- 导入 struts2 -->
- <dependency>
- <groupId>org.apache.struts</groupId>
- <artifactId>struts2-core</artifactId>
- </dependency>
- <dependency>
- <groupId>org.apache.struts</groupId>
- <artifactId>struts2-spring-plugin</artifactId>
- </dependency>
- <!-- servlet jsp -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>servlet-API</artifactId>
- <version>2.5</version>
- <scope>provided</scope>
- </dependency>
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>jsp-API</artifactId>
- <version>2.0</version>
- <scope>provided</scope>
- </dependency>
- <!-- 日志 -->
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.7.2</version>
- </dependency>
- <!-- junit -->
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <version>4.9</version>
- <scope>test</scope>
- </dependency>
- <!-- jstl -->
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>jstl</artifactId>
- <version>1.2</version>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <!-- 设置编译版本为 1.7 -->
- <plugin>
- <groupId>org.apache.maven.plugins</groupId>
- <artifactId>maven-compiler-plugin</artifactId>
- <configuration>
- <source>1.7</source>
- <target>1.7</target>
- <encoding>UTF-8</encoding>
- </configuration>
- </plugin>
- <!-- maven 内置 的 tomcat6 插件 -->
- <plugin>
- <groupId>org.codehaus.mojo</groupId>
- <artifactId>tomcat-maven-plugin</artifactId>
- <version>1.1</version>
- <configuration>
- <!-- 可以灵活配置工程路径 -->
- <path>/SSH</path>
- <!-- 可以灵活配置端口号 -->
- <port>8080</port>
- </configuration>
- </plugin>
- </plugins>
- </build>
- </project>
pom.xml
建议整合时先手动确定版本在进行导入
4. 配置 SSH 项目
注意: 有些配置文件需要在接口或者类同级目录下, 那么需要在 maven 项目的 resource 文件夹下创建一个相同路径的目录
dao(这里将 model 层类一起包含, 可以再细分):domain 模型类, dao 接口, dao 实现类, hibernate 核心配置文件, 对应的映射关系文件, 将 dao 配置进 spring 管理
service:service 接口, service 实现类, spring 管理注册 service
action:action 类, struts2 配置文件, Web.xml 配置
都是 SSH 基本整合, 这里不过多解释, 主要介绍 maven 项目的导包.
来源: http://www.bubuko.com/infodetail-2933994.html