JavaWeb项目管理工具————Maven的使用

1、什么是Maven
Maven是apache下的一个开源项目,是纯java开发,并且只是用来管理java项目的。
1.2 Maven好处

普通的传统项目
这里写图片描述
Maven项目
这里写图片描述
分析:maven项目为什么这么小?没有jar。 需要jar吗?肯定需要。没有存在于maven项目里面,jar存在于哪?
1.3 依赖管理
这里写图片描述
1.4 项目一键构建
编码 编译 测试(junit) 运行 打包 部署
一个 tomcat:run就能把项目运行起来

Maven能干的事:
编译 测试(junit) 运行 打包 部署
1.5 小结
Maven的好处:依赖管理(就是对jar包的统一管理 可以节省空间)、一键构建、可以跨平台、应用于大型项目 可以提高开发效率

分析:
用户管理 订单管理 支付管理 。。。。。
Maven的分模块开发
互联网项目 按业务分
传统项目 按层分 entity dao service web
2、Maven的安装配置
这里写图片描述
从此目录中拷贝文件:
这里写图片描述
直接解压到一个没有中文没有空格的文件夹里解压后的目录如下:
这里写图片描述
Maven软件的核心文件:
这里写图片描述
2.2 Maven环境变量配置
1、要配置jdk, maven3.3.9这个版本所需的jdk版本必须要1.7以上
2、最终要运行的是maven软件中bin目录的mvn命令
所以要配置maven的环境变量
在系统变量添加
环境变量的名称:MAVEN_HOME
变量值:就是maven软甲解压的目录F:\class32\apache-maven-3.3.9
这里写图片描述
3、把MAVEN_HOME添加到path里
这里写图片描述
4、验证maven是否配置成功:
打开dos窗口 输入: mvn –v
这里写图片描述
2.3Maven仓库
三种仓库
1、本地仓库 自己维护

本地仓库的配置只需要修改settings.xml文件就可以
这里写图片描述
2、远程仓库(私服) 公司维护
3、中央仓库 maven团队维护,有两个亿jar包,所能用到的jar包都有
三种仓库的关系如下:
这里写图片描述
3、演示入门程序
3.1Maven的目录结构
这里写图片描述
这里写图片描述
3.2Maven的常用命令
Clean 清理编译的文件
这里写图片描述
Compile 编译了主目录的文件
这里写图片描述
Test 编译并运行了test目录的代码
这里写图片描述
Package 打包
这里写图片描述
Install 就是把项目发布到本地仓库
这里写图片描述
Tomcat:run 一键启动
3.3 Maven的生命周期
ompile test package install deploy(发布到私服)
三种生命周期

Clean生命周期
Clean
Default生命周期
Compile test package install deploy
Site生命周期
Site
3.4 命令和生命周期的阶段的关系
不同的生命周期的命令可以同时执行
Mvn clean package
4、项目构建
Maven在eclipse的配置
1、选择本地安装好的3.3.9版本的maven软件
这里写图片描述
2、修改默认的本地仓库地址
这里写图片描述
项目构建
1、新建maven项目
这里写图片描述
2、跳过骨架,如果不跳过骨架选择创建出的项目目录是不全的
这里写图片描述
3、填写坐标
这里写图片描述
4、创建工程
这里写图片描述
4、处理红色叉号
手动在webapp文件夹下创建一个WEB-INF文件夹,在里面放一个web.xml文件
这里写图片描述
5、处理java编译版本(固定写法)

在pom.xml中添加如下代码

<build>
        <!-- 配置了很多插件 -->
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.5.1</version>  
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <encoding>UTF-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

6、创建一个servlet
这里写图片描述
修改web.xml
删除重复的代码

xmlns=http://java.sun.com/xml/ns/javaee

这里写图片描述
添加jar包(固定写法)
在pom中添加如下代码:

<dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.9</version>
            <scope>test</scope>
        </dependency>
        <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>

    </dependencies>

会发现jar包已添加到项目中
这里写图片描述
启动项目
右击项目—run as –maven build ….
这里写图片描述
5、依赖管理
Jar包的管理

需求:整合struts2 页面上传一个客户id 跳转页面
5.1 添加依赖:
打开maven仓库的视图:
这里写图片描述
5.2 重建索引
这里写图片描述
1、创建maven项目(同上)
2、跳过骨架(同上)
3、填写坐标信息(同上)
4、添加web.xml文件(同上)
5、修改编译版本(同上)
6、添加坐标 选择Dependencies标签 点击add
这里写图片描述
7、手动输入要添加的坐标,选择版本
这里写图片描述
8、可以看到 pom.xml文件中多出了如下代码
这里写图片描述
9、同样的方式添加servlet-api.jar和jsp-api.jar 注意选择scope为provided
10、写action代码

import com.opensymphony.xwork2.ActionSupport;
public class CutomerAction extends ActionSupport {
    private Long custId;
    public Long getCustId() {
        return custId;
    }
    public void setCustId(Long custId) {
        this.custId = custId;
    }
    public String findById(){

        return SUCCESS;
    }

}

11、添加struts.xml文件放到resources目录中
这里写图片描述
内容:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <!-- 配置常量 -->
    <!-- 字符集 -->
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    <!-- 开发模式 -->
    <constant name="struts.devMode" value="true"></constant>

    <!-- 通用package -->
    <package name="customer" namespace="/" extends="struts-default">

        <action name="find" class="cn.itcast.action.CutomerAction"  
            method="findById">
            <result name="success">/jsp/info.jsp</result>
        </action>

    </package>
</struts>

12、添加jsp页面
这里写图片描述
13、修改web.xml文件 添加过滤器

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

5.3 依赖范围

5.3.1 Compile struts2-core
编译(compile)时需要 测试时需要,运行时需要,打包时需要
5.3.2 Provided jsp-api.jar servlet-api.jar
编译(compile)时需要,测试(test)时也需要 ,运行时不需要,打包时不需要
5.3.3 Runtime 数据库驱动包
编译时不需要,测试时需要,运行时需要,打包时需要
5.3.4 Test junit.jar
编译时不需要,测试时需要,运行时不需要,打包也不需要
添加插件

Maven add plugin
这里写图片描述
如果用tomcat7运行用命令:
Tomcat7:run

常见问题:
这里写图片描述
这是由jre版本与jdk版本不匹配的问题,jdk版本不应该高于jre版本。

<modelVersion>  
坐标  GAV
<groupId>cn.itcast</groupId>
<artifactId>ssh</artifactId>
<version>0.0.1-SNAPSHOT</version>
Packaging  打包方式  
Jar  war  pom
<dependencies>
 <dependency>
<build>  里面放的是插件

<plugins>
 <plugin>

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、排除原则(排除spring-beans版本)

<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、完善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>

3、完成实体类代码
这里写图片描述
4、完成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);
    }
}

5、完成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);
    }
}

6、完成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;
    }
}

7、将配置文件放入到 src/main/resources目录中
Customer.hbm.xml

<?xml version="1.0"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN"
"http://www.hibernate.org/dtd/hibernate-mapping-3.0.dtd">
<!-- Generated 2016-2-26 16:58:40 by Hibernate Tools 4.3.1.Final -->
<hibernate-mapping>
    <class name="cn.ctgu.crm.entity.Customer" table="cst_customer"  optimistic-lock="version">
        <id name="custId" type="java.lang.Long">
            <column name="cust_id" />
            <generator class="identity" />
        </id>
        <property name="custName" type="string">
            <column name="cust_name" length="32" not-null="true"></column>
        </property>
        <property name="custUserId" type="java.lang.Long">
            <column name="cust_user_id"></column>
        </property>
        <property name="custCreateId" type="java.lang.Long">
            <column name="cust_create_id"></column>
        </property>
        <property name="custIndustry" type="string">
            <column name="cust_industry" length="32"></column>
        </property>
        <property name="custLevel" type="string">
            <column name="cust_level" length="32"></column>
        </property>
        <property name="custLinkman" type="string">
            <column name="cust_linkman" length="64"></column>
        </property>
        <property name="custPhone" type="string">
            <column name="cust_phone" length="64"></column>
        </property>
        <property name="custMobile" type="string">
            <column name="cust_mobile" length="16"></column>
        </property>
    </class>
</hibernate-mapping>

由于applicationContext.xml、hibernate.cfg.xml、struts.xml会在下面的分模块开发中会涉及到在这里就不赘述。

这里写图片描述
8、修改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>    

9、运行项目
tomcat:run

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、发布到本地仓库
这里写图片描述
这里写图片描述
7.2 创建dao子模块
1、在ssh-parent项目上右击 ,创建时选择 Maven Module
这里写图片描述
2、填写子模块名称ssh-dao
这里写图片描述
3、把属于dao的代码拷贝到 该模块中:
这里写图片描述
CustomerDao.java

package cn.ctgu.crm.dao;

import cn.ctgu.crm.entity.Customer;

public interface CustomerDao {
    /*
     * 根据id获取客户信息
     * */
    public Customer findById(Long id);
}

CustomerDaoImpl.java

package cn.ctgu.crm.dao.impl;

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

import cn.ctgu.crm.dao.CustomerDao;
import cn.ctgu.crm.entity.Customer;

public class CustomerDaoImpl extends HibernateDaoSupport implements CustomerDao {

    @Override
    public Customer findById(Long id) {
        // TODO Auto-generated method stub
        return this.getHibernateTemplate().get(Customer.class, id);
    }

}

Customer.java

package cn.ctgu.crm.entity;

public class Customer {
    private Long custId;
    private String custName;
    private Long custUserId;
    private Long custCreateId;
    private String custIndustry;
    private String custLevel;
    private String custLinkman;
    private String custPhone;
    private String custMobile;
    public Long getCustId() {
        return custId;
    }
    public void setCustId(Long custId) {
        this.custId = custId;
    }
    public String getCustName() {
        return custName;
    }
    public void setCustName(String custName) {
        this.custName = custName;
    }
    public Long getCustUserId() {
        return custUserId;
    }
    public void setCustUserId(Long custUserId) {
        this.custUserId = custUserId;
    }
    public Long getCustCreateId() {
        return custCreateId;
    }
    public void setCustCreateId(Long custCreateId) {
        this.custCreateId = custCreateId;
    }
    public String getCustIndustry() {
        return custIndustry;
    }
    public void setCustIndustry(String custIndustry) {
        this.custIndustry = custIndustry;
    }
    public String getCustLevel() {
        return custLevel;
    }
    public void setCustLevel(String custLevel) {
        this.custLevel = custLevel;
    }
    public String getCustLinkman() {
        return custLinkman;
    }
    public void setCustLinkman(String custLinkman) {
        this.custLinkman = custLinkman;
    }
    public String getCustPhone() {
        return custPhone;
    }
    public void setCustPhone(String custPhone) {
        this.custPhone = custPhone;
    }
    public String getCustMobile() {
        return custMobile;
    }
    public void setCustMobile(String custMobile) {
        this.custMobile = custMobile;
    }

}

applicationContext-dao.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd 
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop.xsd 
    http://www.springframework.org/schema/tx  
    http://www.springframework.org/schema/tx/spring-tx.xsd">


    <!-- 数据库连接池 -->
    <bean id="dataSource" class="com.mchange.v2.c3p0.ComboPooledDataSource">
        <property name="driverClass" value="com.mysql.jdbc.Driver" />
        <property name="jdbcUrl" value="jdbc:mysql://localhost:3306/maven" />
        <property name="user" value="root" />
        <property name="password" value="123456" />
    </bean>

    <!-- 配置sessionFactory -->
    <bean id="sessionFactory" class="org.springframework.orm.hibernate5.LocalSessionFactoryBean">
        <!-- 依赖dataSource -->
        <property name="dataSource" ref="dataSource"/>
        <!-- 创建工厂需要加载hibernate映射文件 -->
        <property name="configLocations" value="classpath:hibernate.cfg.xml"></property>
    </bean>

    <bean id="customerDao" class="cn.ctgu.crm.dao.impl.CustomerDaoImpl">
        <property name="sessionFactory" ref="sessionFactory"></property>
    </bean>


</beans>

hibernate.cfg.xml

<?xml version='1.0' encoding='utf-8'?>
<!DOCTYPE hibernate-configuration PUBLIC
    "-//Hibernate/Hibernate Configuration DTD 3.0//EN"
    "http://www.hibernate.org/dtd/hibernate-configuration-3.0.dtd">

<hibernate-configuration>
    <!-- 会话工厂 -->
    <session-factory>
        <!-- 数据库方言,根据数据库选择 -->
        <property name="hibernate.dialect">org.hibernate.dialect.MySQL5Dialect</property>

        <!--为了方便调试是否在运行hibernate时在日志中输出sql语句 -->
        <property name="hibernate.show_sql">true</property>
        <!-- 是否对日志中输出的sql语句进行格式化 -->
        <property name="hibernate.format_sql">true</property>

        <property name="hibernate.hbm2ddl.auto">none</property>

        <!-- 加载映射文件 -->
        <mapping resource="cn/ctgu/crm/entity/Customer.hbm.xml"/>
    </session-factory>
</hibernate-configuration>

pom.xml

<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>
  <parent>
    <groupId>cn.ctgu.ssh-maven</groupId>
    <artifactId>ssh-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>ssh-dao</artifactId>
  <dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.9</version>
        <scope>test</scope>
    </dependency>
  </dependencies>
</project>

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

7.3 创建service子模块
1、创建方式如上:
2、把属于service的代码拷贝到该工程中
CustomerService.java

package cn.ctgu.crm.service;

import cn.ctgu.crm.entity.Customer;

public interface CustomerService {
    public Customer findById(Long id);
}

CustomerServiceImpl.java

package cn.ctgu.crm.service.impl;

import cn.ctgu.crm.dao.CustomerDao;
import cn.ctgu.crm.entity.Customer;
import cn.ctgu.crm.service.CustomerService;

public class CustomerServiceImpl implements CustomerService {

    private CustomerDao customerDao;
    @Override
    public Customer findById(Long id) {
        // TODO Auto-generated method stub
        return customerDao.findById(id);
    }
    public void setCustomerDao(CustomerDao customerDao) {
        this.customerDao = customerDao;
    }


}

applicationContext-service.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd 
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop.xsd 
    http://www.springframework.org/schema/tx  
    http://www.springframework.org/schema/tx/spring-tx.xsd">


    <bean id="customerService" class="cn.ctgu.crm.service.impl.CustomerServiceImpl">
        <property name="customerDao" ref="customerDao"></property>
    </bean>


</beans>

pom.xml

<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>
  <parent>
    <groupId>cn.ctgu.ssh-maven</groupId>
    <artifactId>ssh-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>ssh-service</artifactId>
  <dependencies>
    <dependency>
        <groupId>cn.ctgu.ssh-maven</groupId>
        <artifactId>ssh-dao</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
  </dependencies>
</project>

这里写图片描述
3、发布到本地仓库中
7.4 创建Action子模块
1、选择war的打包方式
这里写图片描述
2、拷贝属于action的代码和配置文件
这里写图片描述
CustomerAction.java

package cn.ctgu.crm.Action;

import cn.ctgu.crm.entity.Customer;
import cn.ctgu.crm.service.CustomerService;

public class CustomerAction {
    private static final String SUCCESS = null;
    private Long custId;
    private Customer customer;
    private CustomerService customerService;

    public Long getCustId() {
        return custId;
    }

    public void setCustId(Long custId) {
        this.custId = custId;
    }

    public Customer getCustomer() {
        return customer;
    }

    public void setCustomer(Customer customer) {
        this.customer = customer;
    }

    public CustomerService getCustomerService() {
        return customerService;
    }

    public void setCustomerService(CustomerService customerService) {
        this.customerService = customerService;
    }
    public String findCustomerById() {
        customer=customerService.findById(custId);
        System.out.println("前端传过来的客户id是:"+custId);
        return SUCCESS;
    }


}

applicationContext-action.xml

<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context"
    xmlns:aop="http://www.springframework.org/schema/aop" xmlns:tx="http://www.springframework.org/schema/tx"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd 
    http://www.springframework.org/schema/context 
    http://www.springframework.org/schema/context/spring-context.xsd 
    http://www.springframework.org/schema/aop 
    http://www.springframework.org/schema/aop/spring-aop.xsd 
    http://www.springframework.org/schema/tx  
    http://www.springframework.org/schema/tx/spring-tx.xsd">



    <bean id="customerAction" class="cn.ctgu.crm.Action.CustomerAction" scope="prototype">
        <property name="customerService" ref="customerService"></property>

    </bean>

</beans>

struts.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
    "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
    "http://struts.apache.org/dtds/struts-2.3.dtd">

<struts>
    <!-- 配置常量 -->
    <!-- 字符集 -->
    <constant name="struts.i18n.encoding" value="UTF-8"></constant>
    <!-- 开发模式 -->
    <constant name="struts.devMode" value="true"></constant>
    <!-- 主题 -->
    <constant name="struts.ui.theme" value="simple"></constant>
    <!-- 扩展名 -->
    <constant name="struts.action.extension" value="action"></constant>

    <!-- 通用package -->
    <package name="customer" namespace="/" extends="struts-default">

        <action name="findById" class="cn.ctgu.crm.Action.CustomerAction" method="findCustomerById">
            <result name="success">/info.jsp</result>
        </action>

    </package>
</struts>

pom.xml

<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>
  <parent>
    <groupId>cn.ctgu.ssh-maven</groupId>
    <artifactId>ssh-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>ssh-web</artifactId>
  <packaging>war</packaging>
  <dependencies>
    <dependency>
        <groupId>cn.ctgu.ssh-maven</groupId>
        <artifactId>ssh-service</artifactId>
        <version>0.0.1-SNAPSHOT</version>
    </dependency>
  </dependencies>
</project>

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

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
    id="WebApp_ID" version="2.5">


<listener>
    <listener-class>org.springframework.web.context.ContextLoaderListener</listener-class>
</listener>
<context-param>
    <param-name>contextConfigLocation</param-name>
    <!-- classpath*表示不仅寻找目录里面的,jar包中的也寻找 -->
    <param-value>classpath*:applicationContext-*.xml</param-value>
</context-param>


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


    <welcome-file-list>
        <welcome-file>index.html</welcome-file>
        <welcome-file>index.htm</welcome-file>
        <welcome-file>index.jsp</welcome-file>
        <welcome-file>default.html</welcome-file>
        <welcome-file>default.htm</welcome-file>
        <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>

</web-app>

8、私服 nexus
下载好nexus后进入到bin文件夹安装nexus
这里写图片描述
启动服务
这里写图片描述
这里写图片描述
启动失败的解决方法:
这里写图片描述
这里写图片描述

登录nexus

http://localhost:8081/nexus

用户名/密码 admin/admin123

仓库类型
这里写图片描述

Virtual 虚拟仓库
Proxy 代理仓库
Hosted 宿主仓库 本地仓库
Group 组
需求:
把dao放到私服上,然后service从私服上下载

需求 :将ssh_dao的这个工程打成jar包,并放入到私服上去.
8.1上传dao
第一步: 需要在客户端即部署dao工程的电脑上配置 maven环境,并修改 Maven中的settings.xml 文件,配置连接私服的用户和密码 。

此用户名和密码用于私服校验,因为私服需要知道上传都 的账号和密码 是否和私服中的账号和密码 一致。

  <server>
      <id>releases</id>
      <username>admin</username>
      <password>admin123</password>
    </server>
    <server>
      <id>snapshots</id>
      <username>admin</username>
      <password>admin123</password>
    </server>

第二步: 配置项目ssh-dao中的pom.xml
配置私服仓库的地址,本公司的自己的jar包会上传到私服的宿主仓库,根据工程的版本号决定上传到哪个宿主仓库,如果版本为release则上传到私服的release仓库,如果版本为snapshot则上传到私服的snapshot仓库

<distributionManagement>
    <repository>
        <id>releases</id>
    <url>http://localhost:8081/nexus/content/repositories/releases/</url>
    </repository> 
    <snapshotRepository>
        <id>snapshots</id>
    <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository> 
  </distributionManagement>

ssh-dao中最终的为pom.xml

<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>
  <parent>
    <groupId>cn.ctgu.ssh-maven</groupId>
    <artifactId>ssh-parent</artifactId>
    <version>0.0.1-SNAPSHOT</version>
  </parent>
  <artifactId>ssh-dao</artifactId>
  <dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.9</version>
        <scope>test</scope>
    </dependency>
  </dependencies>

   <distributionManagement>
    <repository>
        <id>releases</id>
    <url>http://localhost:8081/nexus/content/repositories/releases/</url>
    </repository> 
    <snapshotRepository>
        <id>snapshots</id>
    <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
    </snapshotRepository> 
  </distributionManagement>
</project>

注意:pom.xml这里<id> 和 settings.xml 配置 <id> 对应!

第三步:执行deploy命令发布到私服
8.2 下载dao
第一步 修改Maven中的settings.xml

<profile>   
    <!--profile的id-->
    <id>dev</id>   
    <repositories>   
      <repository>  
        <!--仓库id,repositories可以配置多个仓库,保证id不重复-->
        <id>nexus</id>   
        <!--仓库地址,即nexus仓库组的地址-->
        <url>http://localhost:8081/nexus/content/groups/public/</url>   
        <!--是否下载releases构件-->
        <releases>   
          <enabled>true</enabled>   
        </releases>   
        <!--是否下载snapshots构件-->
        <snapshots>   
          <enabled>true</enabled>   
        </snapshots>   
      </repository>   
    </repositories>  
     <pluginRepositories>  
        <!-- 插件仓库,maven的运行依赖插件,也需要从私服下载插件 -->
        <pluginRepository>  
            <!-- 插件仓库的id不允许重复,如果重复后边配置会覆盖前边 -->
            <id>public</id>  
            <name>Public Repositories</name>  
            <url>http://localhost:8081/nexus/content/groups/public/</url>  
        </pluginRepository>  
    </pluginRepositories>  
  </profile>  


  <activeProfiles>
    <activeProfile>dev</activeProfile>
  </activeProfiles>

第二步 删除本地仓库中的dao

第三步 update service工程,出现以下信息说明已经成功
这里写图片描述
说明:本博客是参照传智播客课程教案所编写的。

猜你喜欢

转载自blog.csdn.net/jorocco/article/details/80432174