maven学习记录三——maven整合ssh框架

6       整合ssh框架

6.1     依赖传递

只添加了一个struts2-core依赖,发现项目中出现了很多jar,

这种情况 叫 依赖传递

 

6.2     依赖版本冲突的解决

1、  第一声明优先原则

<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>

2、  路径近者优先原则

自己添加jar包

         <dependency>

                 <groupId>org.springframework</groupId>

                 <artifactId>spring-beans</artifactId>

                 <version>4.2.4.RELEASE</version>

       </dependency> 

3、  排除原则

<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>

4、  版本锁定原则

<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>

需求:

传客户ID 页面上显示客户信息

准备数据库

6.3     构建项目

1、  创建数据库,

2、  执行准备好的sql脚本

3、  完善pom.xml文件,把ssh相关的依赖都添加上去

 

 <!-- 属性 -->

         <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>

4、  完成实体类代码

 

5、  完成dao代码

接口

package cn.itcast.dao;

 

import cn.itcast.entity.Customer;

 

public interface CustomerDao {

        

         public Customer getById(Long id);

 

}

实现类

package com.itcast.dao.impl;

import org.springframework.orm.hibernate5.support.HibernateDaoSupport;

import cn.itcast.dao.CustomerDao;

import cn.itcast.entity.Customer;

public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao {

         @Override

         public Customer getById(Long id) {

                   return this.getHibernateTemplate().get(Customer.class, id);

         }

}

6、  完成service代码

接口

package com.itcast.service;

import cn.itcast.entity.Customer;

public interface CustomerService {

         public Customer getById(Long id);

} 

实现类

package com.itcast.service.impl;

 

import com.itcast.service.CustomerService;

 

import cn.itcast.dao.CustomerDao;

import cn.itcast.entity.Customer;

 

public class CustomerServiceImpl implements CustomerService {

         private CustomerDao  customerDao;

         public void setCustomerDao(CustomerDao customerDao) {

                   this.customerDao = customerDao;

         }

         @Override

         public Customer getById(Long id) {

                   return customerDao.getById(id);

         }

}

7、  完成action代码

package cn.itcast.action;

import com.itcast.service.CustomerService;

import com.opensymphony.xwork2.ActionSupport;

import cn.itcast.entity.Customer;

public class CutomerAction extends ActionSupport {

         //两个成员变量

         private Customer  customer;

        

         private Long custId;

         public Customer getCustomer() {

                   return customer;

         }

         public void setCustomer(Customer customer) {

                   this.customer = customer;

         }

         private CustomerService customerService;

         public void setCustomerService(CustomerService customerService) {

                   this.customerService = customerService;

         }

         public Long getCustId() {

                   return custId;

         }

         public void setCustId(Long custId) {

                   this.custId = custId;

         }

         public String findById(){

                   customer = customerService.getById(custId);

                   return SUCCESS;

         }

}

8、  拷贝配置文件并修改

从如下图位置拿到配置文件

 

放入到 src/main/resources目录中

 

修改内容 略

9、  修改web.xml 添加spring的监听

<listener>

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

</listener>

<context-param>

<param-name>contextConfigLocation</param-name>

<param-value>classpath:applicationContext.xml</param-value>

</context-param>        

10、              运行项目

7      分模块开发

依赖范围对依赖传递造成的影响(了解)

父工程来管理   聚合

7.1     创建父工程:

1、

 

2、创建出的父工程如下

 

3、在pom.Xml中添加以下信息:

 

 <!-- 属性 -->

         <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>

 

4、发布到本地仓库

  dao  service  web

7.2     创建dao子模块

1、在ssh-parent项目上右击 ,创建时选择 Maven Module

 

2、填写子模块名称ssh-dao

 

3、把属于dao的代码拷贝到 该模块中:

 

4、完成后发布到本地仓库中

7.3     创建service子模块

1、创建方式如上:

2、把属于service的代码拷贝到该工程中

 

3、发布到本地仓库中

7.4     创建Action子模块

1、选择war的打包方式

 

5、  拷贝属于action的代码和配置文件

 

6、  修改web.xml  添加spring监听

<listener>

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

</listener>
<context-param>

 <param-name>contextConfigLocation</param-name>

 <param-value>classpath*:applicationContext-*.xml</param-value>

</context-param>

4、添加页面:

 

原文地址:https://www.cnblogs.com/PengChengLi/p/8506215.html