zoukankan      html  css  js  c++  java
  • Maven框架的下载、基本配置以及入门案例

    Maven框架

    ----- 图片有空再补
    可以看为我知笔记的内容,图片完整:https://2e39dcd0.wiz03.com/wapp/pages/view/share/s/0KetPg1bRx7G29XSf327xnnk1rcm-G0MIAPx2ipgu_3KXCdd

    第一章 Maven概述

    擅长管理大型项目
    自动管理你需要的jar包
    自动进行下载我们需要的jar包。
    

    1.maven的概念

    ​ Maven是项目进行模型抽象,充分运用面向对象的思想,Maven可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具。Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具。由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目。

    说白了: Maven是由Apache开发的一个工具。用来管理java项目, 依赖管理(jar包的管理),项目构建.

    2.Maven的作用

    • 依赖管理: maven对项目的第三方构件(jar包)进行统一管理。向工程中加入jar包不要手工从其它地方拷贝,通过maven定义jar包的坐标,自动从maven仓库中去下载到工程中。

    • 项目构建: maven提供一套对项目生命周期管理的标准,开发人员、和测试人员统一使用maven进行项目构建。项目生命周期管理:编译、测试、打包、部署、运行。

    • maven对工程分模块构建,提高开发效率。

    3.Maven的概念模型

    1530969038737

    4.Maven的仓库

    4.1 Maven的仓库

    仓库名称 作用
    本地仓库 相当于缓存,工程第一次会从远程仓库(互联网)去下载jar 包,将jar包存在本地仓库(在程序员的电脑上)。第二次不需要从远程仓库去下载。先从本地仓库找,如果找不到才会去远程仓库找。
    中央仓库 就是远程仓库,仓库中jar由专业团队(maven团队)统一维护。中央仓库的地址:http://repo1.maven.org/maven2/
    远程仓库(私服) 私服是一种特殊的远程仓库,它是架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用。当Maven须要下载构件的时候。它从私服请求,假设私服上不存在该构件,则从外部的远程仓库下载,缓存在私服上之后,再为Maven的下载请求提供服务。

    1530969111977

    4.2 仓库中存放的内容

    • Maven自身运行所需要的插件
    • 第三方框架(spring/mybatis/springmvc)和工具类的jar包
    • 我们自己开发的maven项目安装后的jar包

    5 maven的坐标

    ​ Maven的一个核心的作用就是管理项目的依赖,引入我们所需的各种jar包等。在Maven中,不论什么一个依赖、插件或者项目构建的输出, 都能够称之为构件

    ​ 为了能自动化的解析任何一个Java构件. Maven必须将这些Jar包或者其他资源进行唯一标识,这是管理项目的依赖的基础,也就是我们要说的坐标

    ​ 包括我们自己开发的项目,也是要通过坐标进行唯一标识的,这样才能才其它项目中进行依赖引用。坐标的定义元素如下:

    • groupId:项目组织唯一的标识符,实际对应JAVA的包的结构
      • (一般写公司的组织名称 例如:com.itheima,com.alibaba)
    • artifactId: 项目的名称
    • version:定义项目的当前版本

    例如:要引入druid的jar包,只需要在pom.xml配置文件中配置引入druid的坐标即可:

    <!--druid连接池-->
    <dependency>
      <groupId>com.alibaba</groupId>
      <artifactId>druid</artifactId>  
      <version>1.1.10</version>  
    </dependency>
    

    第二章 maven的安装(软件)

    1 下载maven

    1571635692104

    2 安装maven

    将maven压缩包解压, 复制到没有中文没有空格的目录下,即安装完毕

    1571635743923

    3 maven的目录介绍

    目录名 作用
    bin 可执行指令
    boot 第三方类的加载框架
    conf 配置文件目录
    lib maven自身的类库

    4 配置环境变量

    1571636629488

    MAVEN_HOME=D:1_install3_kaifaapache-maven-3.6.1
    Path=%MAVEN_HOME%in;... ...
    

    1571636683606

    5 配置本地仓库

    1、找到Maven解压目录confsettings.xml 
    2、在setting.xml 文件中找到 localRepository 标签 
    3、将 <localRepository>/path/to/local/repo</localRepository>从注释中取出 
    4、将标签体内容修改为自定义的Maven仓库目录
    

    2.5.1 将/资料/本地仓库/xxx.zip 解压

    复制到 没有中文和空格 目录下

    1571637131430

    2.5.2 配置本地仓库

    在maven的安装目录中 maven/conf/settings.xml 配置本地仓库:

    1571637290924

    <settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
              xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
              xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
    		  
    	<localRepository>D:1_install3_kaifa
    epository_maven</localRepository>
    

    2.5.3 配置阿里云远程仓库 (扩展)

    1571637387340

      <mirrors>
    	<mirror>
    		<id>alimaven</id>
    		<name>aliyun maven</name>
    		<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    		<mirrorOf>central</mirrorOf>        
    	 </mirror>
      </mirrors>
    

    6 测试maven安装成功

    打开cmd本地控制台, 输入

    mvn -version
    

    1571637596719

    7 小结

    1. Maven工具安装包 和 本地仓库解压到一个没有中文没有空格目录下. 建议分两个文件夹

    2. 配置Maven的时候(必须MAVEN_HOME)

      1. MAVEN_HOME: 配置到Maven工具解压目录
      2. path: 配置到Maven工具解压之后里面的bin目录

    第三章 IDEA整合本地Maven

    1 配置maven环境

    方式一:

    1571795547739

    方式二

    1571637961086

    1571785194218

    2 问题: 解决创建工程缓慢

    因为 联网 下载内容, 所以 导致创建工程缓慢

    -DarchetypeCatalog=internal
    

    1571651141645

    第四章 idea创建maven工程(重点重点重点)

    1 创建空的工程

    1571638978518

    1571639060631

    1571639097047

    1571639128629

    2 创建跳过骨架的java项目

    2.1 how

    1571639192677

    1571639234551

    1571639808115

    1571639845612

    1571639911574

    目录 作用
    main/java 存放java代码
    resources 存放配置文件的
    test/java 存放测试java代码

    1571639974745

    2.2 创建java代码

    1571640197272

    package cn.itcast;
    
    public class ProductDao {
        public void add() {
            System.out.println("1 添加商品 ... ...");
        }
    
        public void del() {
            System.out.println("2 删除商品 ... ...");
        }
    
        public void update() {
            System.out.println("3 修改商品 ... ...");
        }
    
        public void queryAll() {
            System.out.println("4 查询所有商品 ... ...");
        }
    }
    

    2.3 生成测试代码

    正式上线前, 每个方法都必须经过测试, 目前我们能够想到的就是main方法.

    因为一个类只有一个main方法, 一个类可能有上千个方法, 那得需要多少个方法, 所以 迫切需要更高效方法, junit测试登场了.

    1571640260878

    1571640299024

    1571640360185

    1537362379635

    为什么junit报红? 因为缺少junit包, 导入缺少的junit包即可.

    2.4 导入依赖

    1571640422448

    <?xml version="1.0" encoding="UTF-8"?>
    <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>cn.itcast</groupId>
        <artifactId>day1801</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <dependencies>
            <!--导入junit包-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
            </dependency>
        </dependencies>
    </project>
    

    报红解决:

    1571640449058

    2.5 一个一个测试

    完成测试代码:

    package cn.itcast;
    
    import org.junit.Test;
    
    public class ProductDaoTest {
    
        private ProductDao productDao = new ProductDao();
    
        @Test
        public void add() {
            productDao.add();
        }
    
        @Test
        public void del() {
            productDao.del();
        }
    
        @Test
        public void update() {
            productDao.update();
        }
    
        @Test
        public void queryAll() {
            productDao.queryAll();
        }
    }   
    

    2.6 测试所有

    一个一个测试,太累了, 给大家介绍一个简单的.

    1571640789291

    3 创建有骨架 java工程(了解)

    3.1 how?

    1571643211567

    1571643255407

    1571643318618

    1571643469936

    * 缺少 resources目录 补上

    1571643618970

    pom.xml中会产生很多多余的配置

    1571643672589

    总结: 因为创建有骨架的java工程会产生很多多余的配置, 所以实际开发中一般不用.

    4 创建有骨架的web工程(了解)

    4.1 how?

    1571643983838

    1571644003571

    1571644017266

    1571644028167

    1571644081864

    4.2 标准web工程目录结构

    1537365617727

    经过对比发现如下问题:

    4.3 缺少java目录

    1537365726887

    1537365747597

    1537365811337

    更改java目录属性

    1537365915916

    1537365941638

    4.4 缺少resources目录

    1537365960822

    1537365982221

    1537365994589

    1537366029843

    4.5 缺少test目录

    4.5.1 新建test目录

    1537366119328

    1537366137117

    1537366151796

    4.5.2 新建test.java目录

    1537366176109

    1537366192184

    1537366210414

    1537366237164

    总结: 使用骨架创建的web项目 在开发时不常用!
    	理由1: 在pom.xml增加不必要的配置
    	理由2: 完整的web工程缺的东西太多!
    

    5 创建跳过骨架的web工程(重点重点重点)

    5.1 创建无骨架的java工程

    1571644419657

    1571644449059

    1571644473424

    1571644497436

    修改打包方式

    1571644641270

    标准web项目的目录结构

    1537365617727

    5.2 问题: 缺少webapp 目录

    1571644992692

    5.3 问题: 缺少 web.xml

    1571645289905

    1571645306990

    5.4 tomcat插件

    5.4.1 在pom.xml中配置

    因为 web项目最终跑在web服务器中, 所以需要配置 web服务器(tomcat只是其中一个)

    pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <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>cn.itcast.maven</groupId>
        <artifactId>web02</artifactId>
        <version>1.0-SNAPSHOT</version>
        <!--
            java工程: jar 含义是 java rar
            web工程: war 含义是 web rar
        -->
        <packaging>war</packaging>
        <!--配置插件-->
        <build>
            <plugins>
                <!-- 配置Tomcat插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <!--配置端口号-->
                        <port>80</port>
                        <!--配置项目路径-->
                        <path>/day1804</path>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    </project>
    

    5.4.2 准备index.html

    1571645670350

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>这是我的第一个maven版本的web项目!</h1>
    </body>
    </html>
    

    5.4.3 启动tomcat

    1571645721863

    1571645760741

    测试:

    1571645800246

    5.4.4 简化启动tomcat

    1571646401841

    1571646440164

    1571646512205

    1571646600055

    4.6.3 创建servlet

    1571646808325

    1571646885072

    1571646966414

    4.6.3.1 解决servlet因为缺少servlet.jar包报错

    在pom.xml增加servlet依赖

    1571647275049

    1571647302251

    1571647352446

    1571647411268

    1571647528706

    <?xml version="1.0" encoding="UTF-8"?>
    <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>cn.itcast</groupId>
        <artifactId>day1804</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <!--修改web项目的打包方式-->
        <packaging>war</packaging>
    
        <dependencies>
    
            <!--引入servlet依赖-->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <!--只在测试和编译时有效-->
                <scope>provided</scope>
            </dependency>
    
        </dependencies>
    
        <!--配置插件-->
        <build>
            <plugins>
                <!-- 配置Tomcat插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <!--配置端口号-->
                        <port>80</port>
                        <!--配置项目路径-->
                        <path>/day1804</path>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    经过观察,servlet不再报错

    1571647734636

    测试:

    1571647714708

    第五章 maven的常用指令

    1571647994685

    1 clean命令

    1530977033459

    1.1 方式一

    1571648094960

    1571648143525

    发现 target目录 被 清除了

    1571648180288

    1.2 方式二

    1571813451648

    1571648740838

    1571649010223

    1571649184818

    执行清屏命令:

    1571649234950

    经过观察发现target目录消失:

    1571649285060

    2 compile命令

    1530977220710

    1571649436088

    3 test命令

    测试命令: 执行 src/test/java 下junit的测试用例

    • 准备工作1: 业务类

      package cn.itcast.service;
      
      public class UserService {
      
          public void add() {
              System.out.println("=============1 UserService.add 天生傲娇 ... ...");
          }
      
          public void queryAll() {
              System.out.println("=============2 UserService.queryAll ... ...");
          }
      }
      
    • 准备工作2: 测试类

      package cn.itcast.service;
      
      import org.junit.Test;
      
      public class UserServiceTest {
      
          private UserService userService = new UserService();
          @Test
          public void add() {
              userService.add();
          }
      
          @Test
          public void queryAll() {
              userService.queryAll();
          }
      }
      
    • 测试:

      1571649973784

    4 package命令

    mvn package, 打包项目

    4.1 对java项目打包

    1571650068040

    4.2 对web项目打包

    1571650191556

    5 install命令

    mvn install, 打包后将其安装在本地仓库

    1571650295273

    安装完毕后,可以在本地仓库中找到 对应的项目

    1571650412338

    第六章 依赖管理

    1 maven插件

    1530978764025

    1.1 jdk编译版本的插件

    pom.xml

    1571650607384

                <!-- java编译插件 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.2</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
    

    1571650718594

    1571650688355

    1.2 tomcat7服务端的插件

    • 配置tomcat插件
    <!-- 配置Tomcat插件 -->
    <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
            <!--配置端口号-->
            <port>80</port>
            <!--配置项目路径-->
            <path>/day1804</path>
        </configuration>
    </plugin>
    
    • 运行tomcat插件

      • 方式一

        1571813786908

        1571651442564

      • 方式二

        1571651462914

    • tomcat 插件注意问题

      Maven的中央仓库中只有tomcat7.X版本

      如果想使用tomcat8.X版本,

      1. 需要从第三方仓库查找
        2. 或者使用idea集成外部的tomcat插件

    2 导入依赖

    2.1 导入junit依赖

    • 导入junit坐标
    <dependencies>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
    

    1530980380837

    • 进行单元测试
    import org.junit.Test;
    
    public class DemoTest {
        @Test
        public void demo1() {
            System.out.println("敢于亮剑,绝不后退!");
        }
    }
    
    

    1530980434008

    2.2 导入servlet的依赖

    • 创建servlet, 但是发现报错,原因是没有导入servlet的坐标依赖

    1530980596377

    • 导入servlet的坐标依赖
    <!-- https://mvnrepository.com/artifact/javax.servlet/javax.servlet-api -->
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>javax.servlet-api</artifactId>
        <version>3.1.0</version>
        <scope>provided</scope>
    </dependency>
    
    • 原有的servlet报错恢复正常

    1530980728536

    3 依赖范围

    1530980805944

    1530980856407

    第七章 maven案例: 完成用户列表显示功能

    1 需求分析

    1531021609684

    2 准备工作

    2.1 sql语句

    create database day18_db;
    
    use day18_db;
    
    create table user(
    	id int primary key auto_increment,
    	name varchar(50),
    	money int
    );
    
    insert into user(id, name, money) values(null, '张三', 1000);
    insert into user(id, name, money) values(null, '李四', 1000);
    insert into user(id, name, money) values(null, '王五', 1000);
    

    2.2 创建项目(跳过骨架的java项目)

    1571652093789

    1571652122987

    1571652156154

    1571652239439

    2.3 添加webapp目录 和 web.xml文件

    1571652573617

    1571652825828

    1571652856355

    2.4 导包(pom.xml)

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns="http://maven.apache.org/POM/4.0.0"
             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>cn.itcast</groupId>
        <artifactId>day1805</artifactId>
        <version>1.0-SNAPSHOT</version>
        
        <!--因为当前项目是web项目, 所以设置为 war-->
        <packaging>war</packaging>
    
        <!-- 1 导入依赖-->
        <dependencies>
            <!--servlet-->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <version>3.1.0</version>
                <scope>provided</scope>
            </dependency>
    
            <!--junit测试-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <version>4.12</version>
                <scope>test</scope>
            </dependency>
    
            <!--mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <version>5.1.38</version>
            </dependency>
    
            <!-- Mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
                <version>3.4.5</version>
            </dependency>
    
            <!--日志-->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
                <version>1.6.4</version>
            </dependency>
    
            <!--jackson -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
                <version>2.4.2</version>
            </dependency>
    
        </dependencies>
    
        <!-- 2 配置插件-->
        <build>
            <plugins>
                <!-- java编译插件 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.2</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
    
                <!-- 配置Tomcat插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <!--配置端口号-->
                        <port>9000</port>
                        <!--配置项目路径-->
                        <path>/day1805</path>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    3 实现

    3.1 数据层

    3.1.1 接口

    1571656978762

    package cn.itcast.mapper;
    
    import cn.itcast.pojo.User;
    
    import java.util.List;
    
    public interface UserMapper {
    
        /*查询所有*/
        public List<User> queryAll();
    
    }
    

    3.1.2 配置文件

    1571657003788

    <?xml version="1.0" encoding="UTF-8" ?>
    <!DOCTYPE mapper
            PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
            "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
    <mapper namespace="cn.itcast.mapper.UserMapper">
        <!--查询所有用户-->
        <select id="queryAll" resultType="User">
            select * from tb_user
        </select>
    </mapper>
    

    3.2 业务层

    1571657032008

    3.2.1 接口

    package cn.itcast.service;
    
    import cn.itcast.pojo.User;
    
    import java.util.List;
    
    public interface UserService {
        /**
         * 查询所有
         */
        public List<User> queryAll();
    }
    

    3.2.2 实现类

    package cn.itcast.service.impl;
    
    import cn.itcast.base.BaseService;
    import cn.itcast.mapper.UserMapper;
    import cn.itcast.pojo.User;
    import cn.itcast.service.UserService;
    import org.apache.ibatis.session.SqlSession;
    
    import java.util.List;
    
    public class UserServiceImpl extends BaseService implements UserService {
        @Override
        public List<User> queryAll() {
            SqlSession sqlSession = getSession();
            UserMapper userMapper = getDao(sqlSession, UserMapper.class);
            List<User> userList = null;
            try {
                userList = userMapper.queryAll();
                commitAndCloseSession(sqlSession);
            } catch (Exception e) {
                e.printStackTrace();
                rollbackAndCloseSession(sqlSession);
            }
            return userList;
        }
    }
    

    3.2.3 测试

    1571657054504

    package cn.itcast.service;
    
    import cn.itcast.pojo.User;
    import cn.itcast.service.impl.UserServiceImpl;
    import org.junit.Test;
    
    import java.util.List;
    
    public class UserServiceTest {
    
        @Test
        public void queryAll() {
            UserService userService = new UserServiceImpl();
            List<User> userList = userService.queryAll();
            for (User user : userList) {
                System.out.println(user);
            }
        }
    }
    

    3.3 web层

    3.3.1 代码

    1571657338301

    package cn.itcast.web;
    
    import cn.itcast.pojo.User;
    import cn.itcast.service.UserService;
    import cn.itcast.service.impl.UserServiceImpl;
    import com.fasterxml.jackson.databind.ObjectMapper;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.List;
    
    @WebServlet("/userQueryAll")
    public class UserQueryAllServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 解决获取参数的中文乱码 (浏览器 -> 服务器)
            request.setCharacterEncoding("utf-8");
            // 解决浏览器出现的中文乱码
            response.setContentType("text/html;charset=utf-8");
    
            // 1 调用业务层 查询所有用户
            UserService userService = new UserServiceImpl();
            List<User> userList = userService.queryAll();
            // 2 将所用用户集合 转成json字符串
            ObjectMapper objectMapper = new ObjectMapper();
            String json = objectMapper.writeValueAsString(userList);
            // 3 将json字符串返回给浏览器
            response.getWriter().println(json);
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request, response);
        }
    }
    

    3.3.2 重启测试

    http://localhost:9000/day1805/userQueryAll
    

    1571657403652

    3.4 页面

    3.4.1 导入依赖的js文件

    1571657999128

    3.4.2 页面

    1571658039345

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
    <div id="app">
        <table align="center" border="1" cellpadding="10" cellspacing="0" width="50%">
            <tr>
                <th>编号</th>
                <th>姓名</th>
                <th>存款</th>
                <th>操作</th>
            </tr>
            <tr v-for="user in userList">
                <td>{{user.id}}</td>
                <td>{{user.name}}</td>
                <td>{{user.money}}</td>
                <td>
                    <a href="javascript:void(0)">删除</a>
                    <a href="javascript:void(0)">修改</a>
                </td>
            </tr>
        </table>
    </div>
    <script src="js/vue.min.js"></script>
    <script src="js/axios-0.18.0.js"></script>
    <script src="js/user.js"></script>
    </body>
    </html>
    

    3.4.3 测试

    http://localhost:9000/day1805/userList.html
    

    1571658074491

    第八章 常见问题汇总

    1 tomcat插件重复启动:导致端口占用
    2 index.html放到WEB-INF下面,导致访问不到这个html页面
    3 名称不叫index.html,结果直接输入localhost:8080,访问不到这个页面
    4 关联了jre,需要使用JDK
    5 需要使用我给的仓库
    

    第九章 继承

    1 why?

    需求:

    ​ a项目 需要mysql包

    ​ b项目 需要mysql包

    ​ c项目 需要mysql包

    ​ 都需要,所以需要配置三次

    问题:

    ​ 重复的代码配置了三次, 次数 100万个项目, 配置100万次

    解决:

    ​ 继承了, 拥有了父类的一切

    2 how

    2.1 父pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <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>cn.itcast</groupId>
        <artifactId>itcast_parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <properties>
            <servlet.version>3.1.0</servlet.version>
            <mysql.version>5.1.32</mysql.version>
            <jackson.version>2.5.2</jackson.version>
        </properties>
    
        <!--问题: 如果父模块有100万个jar包, 而子模块只需要其中的一个, 冲突了-->
        <!--解决: 将依赖管理-->
        <dependencyManagement>
            <dependencies>
                <!--servlet-->
                <dependency>
                    <groupId>javax.servlet</groupId>
                    <artifactId>javax.servlet-api</artifactId>
                    <version>${servlet.version}</version>
                    <scope>provided</scope>
                </dependency>
    
                <!--mysql-->
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>${mysql.version}</version>
                </dependency>
    
                <!--jackson -->
                <dependency>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>jackson-databind</artifactId>
                    <version>${jackson.version}</version>
                </dependency>
            </dependencies>
        </dependencyManagement>
    
        <!--父工程 管理插件-->
        <build>
            <plugins>
                <!-- java编译插件 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.2</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
            </plugins>
    
            <pluginManagement>
                <plugins>
                    <!-- 配置Tomcat插件 -->
                    <plugin>
                        <groupId>org.apache.tomcat.maven</groupId>
                        <artifactId>tomcat7-maven-plugin</artifactId>
                        <version>2.2</version>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    
    </project>
    

    2.2 子pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <parent>
            <artifactId>itcast_parent</artifactId>
            <groupId>cn.itcast</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>itcast_dao</artifactId>
    
        <dependencies>
            <!--mysql
                问题: 父模块有100万个子模块, 如何给一个地方就可以修改所有子模块的版本
            -->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
                <!--如果子模块发现父模块的版本低, 但是又不能改父模块的版本, 手动修改自己的jar包版本-->
                <version>5.1.38</version>
            </dependency>
    
            <!--servlet-->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <scope>provided</scope>
            </dependency>
    
            <!--jackson -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
            </dependency>
        </dependencies>
    
    </project>
    

    第十章 聚合工程

    1571822613116

    1571822628116

    1 分析

    1535444139772

    2 创建父工程

    1571757683359

    1571757866402

    1571757725403

    1571757742830

    1571757786813

    2.1 删除src目录

    因为这个项目的唯一作用是用来管理版本的, 所以删掉没有用的src目录

    删除完成,如下图

    1571757918526

    2.2 修改pom.xml管理版本

    <?xml version="1.0" encoding="UTF-8"?>
    <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xmlns="http://maven.apache.org/POM/4.0.0"
             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>cn.itcast.itheima</groupId>
        <artifactId>itheima_parent</artifactId>
        <version>1.0-SNAPSHOT</version>
    
        <!--pom表示这是一个被继承的模块-->
        <packaging>pom</packaging>
    
        <!-- 集中定义依赖版本号 -->
        <properties>
            <junit.version>4.12</junit.version>
            <servlet.version>3.1.0</servlet.version>
            <mysql.version>5.1.38</mysql.version>
            <mybatis.version>3.4.5</mybatis.version>
            <slf4j.version>1.6.4</slf4j.version>
            <jackson.version>2.4.2</jackson.version>
        </properties>
    
        <!-- 1 导入依赖-->
        <dependencyManagement>
            <dependencies>
                <!--junit测试-->
                <dependency>
                    <groupId>junit</groupId>
                    <artifactId>junit</artifactId>
                    <version>${junit.version}</version>
                </dependency>
    
                <!--mysql-->
                <dependency>
                    <groupId>mysql</groupId>
                    <artifactId>mysql-connector-java</artifactId>
                    <version>${mysql.version}</version>
                </dependency>
    
                <!-- Mybatis -->
                <dependency>
                    <groupId>org.mybatis</groupId>
                    <artifactId>mybatis</artifactId>
                    <version>${mybatis.version}</version>
                </dependency>
    
                <!--日志-->
                <dependency>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                    <version>${slf4j.version}</version>
                </dependency>
    
                <!--jackson -->
                <dependency>
                    <groupId>com.fasterxml.jackson.core</groupId>
                    <artifactId>jackson-databind</artifactId>
                    <version>${jackson.version}</version>
                </dependency>
    
                <!--servlet-->
                <dependency>
                    <groupId>javax.servlet</groupId>
                    <artifactId>javax.servlet-api</artifactId>
                    <version>${servlet.version}</version>
                    <scope>provided</scope>
                </dependency>
    
            </dependencies>
        </dependencyManagement>
    
        <!-- 2 配置插件-->
        <build>
            <plugins>
                <!-- java编译插件 -->
                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-compiler-plugin</artifactId>
                    <version>3.2</version>
                    <configuration>
                        <source>1.8</source>
                        <target>1.8</target>
                        <encoding>UTF-8</encoding>
                    </configuration>
                </plugin>
            </plugins>
    
            <pluginManagement>
                <plugins>
                    <!-- 配置Tomcat插件 -->
                    <plugin>
                        <groupId>org.apache.tomcat.maven</groupId>
                        <artifactId>tomcat7-maven-plugin</artifactId>
                        <version>2.2</version>
                    </plugin>
                </plugins>
            </pluginManagement>
        </build>
    
    </project>
    

    3 数据层子模块

    3.1 创建子模块项目

    1571758247586

    1571758275176

    1571758344641

    1571758387771

    1571758456799

    1571758486904

    1571758524723

    3.2 pom.xml

    1571758543316

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <parent>
            <artifactId>itheima_parent</artifactId>
            <groupId>com.itheima</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>itheima_dao</artifactId>
    
        <!--java项目-->
        <packaging>jar</packaging>
    
        <dependencies>
            <!--junit测试-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <scope>test</scope>
            </dependency>
    
            <!--mysql-->
            <dependency>
                <groupId>mysql</groupId>
                <artifactId>mysql-connector-java</artifactId>
            </dependency>
    
            <!-- Mybatis -->
            <dependency>
                <groupId>org.mybatis</groupId>
                <artifactId>mybatis</artifactId>
            </dependency>
    
            <!--日志-->
            <dependency>
                <groupId>org.slf4j</groupId>
                <artifactId>slf4j-log4j12</artifactId>
            </dependency>
        </dependencies>
    </project>
    

    3.3 复制内容到 src 目录下

    1571758721673

    3.4 复制内容到 resources 目录下

    1571758801627

    3.5 测试

    1571759032005

    package cn.itcast.mapper;
    
    import cn.itcast.pojo.User;
    import cn.itcast.utils.SqlSessionUtils;
    import org.apache.ibatis.session.SqlSession;
    import org.junit.Before;
    import org.junit.Test;
    
    import java.util.List;
    
    public class UserMapperTest {
    
        UserMapper userMapper;
        SqlSession sqlSession;
    
        @Before
        public void init() throws Exception {
            sqlSession = SqlSessionUtils.openSession();
            userMapper = sqlSession.getMapper(UserMapper.class);
        }
    
        @Test
        public void queryAll() {
            List<User> userList = userMapper.queryAll();
            for (User user : userList) {
                System.out.println(user);
            }
        }
    }
    

    4 业务层子模块

    4.1 创建子模块项目

    1571759263156

    1571759290140

    1571759357195

    1571759386610

    1571759436199

    1571759477172

    4.2 pom.xml

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <parent>
            <artifactId>itheima_parent</artifactId>
            <groupId>com.itheima</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>itheima_service</artifactId>
    
        <dependencies>
            <!--引入dao依赖-->
            <dependency>
                <artifactId>itheima_dao</artifactId>
                <groupId>com.itheima</groupId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
    
            <!--junit测试-->
            <dependency>
                <groupId>junit</groupId>
                <artifactId>junit</artifactId>
                <scope>test</scope>
            </dependency>
    
        </dependencies>
    
    </project>
    

    4.3 复制内容到src目录下

    1571759626148

    4.4 测试

    1571759666090

    package cn.itcast.service;
    
    
    import cn.itcast.pojo.User;
    import cn.itcast.service.impl.UserServiceImpl;
    import org.junit.Test;
    
    import java.util.List;
    
    public class UserServiceTest {
    
        @Test
        public void queryAll() {
            UserService userService = new UserServiceImpl();
            List<User> userList = userService.queryAll();
            for (User user : userList) {
                System.out.println(user);
            }
        }
    }
    

    5 web层工程

    5.1 创建子模块

    1571759773164

    1571759811629

    1571759839291

    1571759871194

    5.2 改造成web项目

    5.2.1 pom文件

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <parent>
            <artifactId>itheima_parent</artifactId>
            <groupId>com.itheima</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>itheima_web</artifactId>
    
        <!--因为当前模块是web项目,所以指定为war包-->
        <packaging>war</packaging>
    
        <build>
            <plugins>
                <!-- 配置Tomcat插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <!--指定项目路径-->
                        <path>/</path>
                        <!--指定端口号-->
                        <port>9000</port>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
    </project>
    

    5.2.2 补充webapp目录

    1571761310525

    1571761420838

    5.2.3 增加测试页面

    1571761705542

    <!DOCTYPE html>
    <html lang="en">
    <head>
        <meta charset="UTF-8">
        <title>Title</title>
    </head>
    <body>
        <h1>敢于亮剑,绝不后退!</h1>
    </body>
    </html>
    

    5.2.4 启动tomcat 方式一

    1571761772983

    测试:

    1571762003244

    5.2.5 启动tomcat方式二

    1571762143716

    1571762259914

    1571762287940

    1571762332956

    1571762502256

    5.3 调试 Servlet

    5.3.1 pom.xml

    1571762839168

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <parent>
            <artifactId>itheima_parent</artifactId>
            <groupId>com.itheima</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>itheima_web</artifactId>
    
        <!--因为当前模块是web项目,所以指定为war包-->
        <packaging>war</packaging>
    
        <build>
            <plugins>
                <!-- 配置Tomcat插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <!--指定项目路径-->
                        <path>/</path>
                        <!--指定端口号-->
                        <port>9000</port>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
        <dependencies>
            <!--jackson -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
            </dependency>
    
            <!--servlet-->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <scope>provided</scope>
            </dependency>
        </dependencies>
    
    </project>
    

    5.3.2 编写servlet

    1571762910622

    package cn.itcast.web;
    
    import javax.servlet.ServletException;
    import javax.servlet.annotation.WebServlet;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.util.HashMap;
    
    @WebServlet("/hello")
    public class HelloServlet extends HttpServlet {
        @Override
        protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            // 解决获取参数的中文乱码 (浏览器 -> 服务器)
            request.setCharacterEncoding("utf-8");
            // 解决浏览器出现的中文乱码
            response.setContentType("text/html;charset=utf-8");
    
            response.getWriter().println("你们真的很棒!");
        }
    
        @Override
        protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
            doPost(request, response);
        }
    }
    

    5.3.3 测试

    1571762961879

    5.4 复制对应内容到web目录下

    5.4.1 复制 servlet到web目录下

    1571763283828

    5.4.2 pom.xml 增加业务层依赖

    <?xml version="1.0" encoding="UTF-8"?>
    <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">
        <parent>
            <artifactId>itheima_parent</artifactId>
            <groupId>com.itheima</groupId>
            <version>1.0-SNAPSHOT</version>
        </parent>
        <modelVersion>4.0.0</modelVersion>
    
        <artifactId>itheima_web</artifactId>
    
        <!--因为当前模块是web项目,所以指定为war包-->
        <packaging>war</packaging>
    
        <build>
            <plugins>
                <!-- 配置Tomcat插件 -->
                <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <!--指定项目路径-->
                        <path>/</path>
                        <!--指定端口号-->
                        <port>9000</port>
                    </configuration>
                </plugin>
            </plugins>
        </build>
    
        <dependencies>
            <!--jackson -->
            <dependency>
                <groupId>com.fasterxml.jackson.core</groupId>
                <artifactId>jackson-databind</artifactId>
            </dependency>
    
            <!--servlet-->
            <dependency>
                <groupId>javax.servlet</groupId>
                <artifactId>javax.servlet-api</artifactId>
                <scope>provided</scope>
            </dependency>
    
            <!--引入业务层依赖-->
            <dependency>
                <artifactId>itheima_service</artifactId>
                <groupId>com.itheima</groupId>
                <version>1.0-SNAPSHOT</version>
            </dependency>
    
        </dependencies>
    
    </project>
    

    5.4.3 启动tomcat报错

    1571763398714

    • 原因: 因为仓库中没有 service 的 jar包

    • 解决:

      1571764006201

      1571763708953

      1571763542436

    再次启动正常, 测试:

    1571764065291

    5.5 聚合

    问题

    每次发布项目都需要依次发布 父模块和依赖的模块, 是不是很麻烦
    

    解决

    通过聚合交给父模块管理,一次性发布所有的项目
    

    how

    1571764692138

  • 相关阅读:
    75. Sort Colors
    101. Symmetric Tree
    121. Best Time to Buy and Sell Stock
    136. Single Number
    104. Maximum Depth of Binary Tree
    70. Climbing Stairs
    64. Minimum Path Sum
    62. Unique Paths
    css知识点3
    css知识点2
  • 原文地址:https://www.cnblogs.com/anke-z/p/13539898.html
Copyright © 2011-2022 走看看