0
点赞
收藏
分享

微信扫一扫

JavaWeb(maven)

Star英 2022-04-17 阅读 63
java

今日内容


一、maven

1.maven概述

Maven 是一个项目管理工具。它包含了一个项目对象模型 (POM:Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Dependency Management System),和用来运行定义在生命周期阶段(phase)中插件(plugin)目标(goal)的逻辑

2.maven依赖管理的概念

Maven 的一个核心特性就是依赖管理。当我们涉及到多模块的项目(包含成百个模块或者子项目),管理依赖就变成一项困难的任务。Maven 展示出了它对处理这种情形的高度控制。
传统的 WEB 项目中,我们必须将工程所依赖的 jar 包复制到工程中,导致了工程的变得很大。
maven 工程中不直接将 jar 包导入到工程中,而是通过在 pom.xml 文件中添加所需 jar包的坐标,这样就很好的避免了 jar 直接引入进来,在需要用到 jar 包的时候,只要查找 pom.xml 文件,再通过 pom.xml 文件中的坐标,到一个专门用于”存放 jar 包的仓库”(maven 仓库)中根据坐标从而找到这些 jar 包,再把这些 jar 包拿去运行。
在这里插入图片描述
在这里插入图片描述

3.maven一键构建概念

我们的项目,往往都要经历编译、测试、运行、打包、安装 ,部署等一系列过程。

  • 什么是构建?
    指的是项目从编译、测试、运行、打包、安装 ,部署整个过程都交给 maven 进行管理,这个过程称为构建。
  • 一键构建
    指的是整个构建过程,使用 maven 一个命令可以轻松完成整个工作。
  • Maven 规范化构建流程如下:
    在这里插入图片描述
    在这里插入图片描述

4.maven的安装

Apache-maven-3.5.2 下载地址:http://archive.apache.org/dist/maven/maven-3/
Maven 下载后,将 Maven 解压到一个没有中文没有空格的路径下,比如 D:\software\maven 下面。
解压后目录结构如下:
在这里插入图片描述
bin:存放了 maven 的命令,比如我们前面用到的 mvn tomcat:run
boot:存放了一些 maven 本身的引导程序,如类加载器等
conf:存放了 maven 的一些配置文件,如 setting.xml 文件
lib:存放了 maven 本身运行所需的一些 jar 包
至此我们的 maven 软件就可以使用了,前提是你的电脑上之前已经安装并配置好了 JDK。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.库的种类和彼此关系

maven 的工作需要从仓库下载一些 jar 包,如下图所示,本地的项目 A、项目 B 等都会通过 maven软件从远程仓库(可以理解为互联网上的仓库)下载 jar 包并存在本地仓库,本地仓库 就是本地文件夹,当第二次需要此 jar 包时则不再从远程仓库下载,因为本地仓库已经存在了,可以将本地仓库理解为缓存,有了本地仓库就不用每次从远程仓库下载了。
在这里插入图片描述
在这里插入图片描述

  • 本地仓库 :用来存储从远程仓库或中央仓库下载的插件和 jar 包,项目使用一些插件或 jar 包, 优先从本地仓库查找
    在这里插入图片描述
  • 远程仓库:如果本地需要插件或者 jar 包,本地仓库没有,默认去远程仓库下载。 远程仓库可以在互联网内也可以在局域网内。
  • 中央仓库 :在 maven 软件中内置一个远程仓库地址 http://repo1.maven.org/maven2 ,它是中央仓库,服务于整个互联网,它是由 Maven 团队自己维护,里面存储了非常全的 jar 包,它包 含了世界上大部分流行的开源项目构件。

6.Maven 本地仓库的配置

将 “repository.rar”解压至自己的电脑上,我们解压在 D:\repository 目录下(可以放在没有中文及空格的目录下)。
在这里插入图片描述
在 MAVE_HOME/conf/settings.xml 文件中配置本地仓库位置(maven 的安装目录下):
在这里插入图片描述
打开 settings.xml文件,配置如下:
在这里插入图片描述
全局 setting 与用户 setting:

  • maven 仓库地址、私服等配置信息需要在 setting.xml 文件中配置,分为全局配置和用户配置。
  • 在 maven 安装目录下的有 conf/setting.xml 文件,此 setting.xml 文件用于 maven 的所有project项目,它作为 maven 的全局配置。
  • 如需要个性配置则需要在用户配置中设置,用户配置的 setting.xml
    在这里插入图片描述
  • maven 会先找用户配置,如果找到则以用户配置文件为准,否则使用全局配置文件。

7.maven标准目录结构

在这里插入图片描述

8.maven常用命令

  • clean: clean 是 maven 工程的清理命令,执行 clean 会删除 target 目录及内容。
  • compile:compile 是 maven 工程的编译命令,作用是将 src/main/java 下的文件编译为 class
    文件输出到 target目录下。 cmd 进入命令状态,执行 mvn compile,如下图提示成功:
    在这里插入图片描述
    查看 target 目录,class 文件已生成,编译完成。
    在这里插入图片描述
  • test:test 是 maven 工程的测试命令 mvn test,会执行 src/test/java 下的单元测试类。
    cmd 执行mvn test 执行 src/test/java 下单元测试类,下图为测试结果,运行 1 个测试用例,全部成功。
    在这里插入图片描述
  • package:package 是 maven 工程的打包命令,对于 java 工程执行 package 打成 jar 包,对于 web工程打成 war包。
  • install:install 是 maven 工程的安装命令,执行 install 将 maven 打成 jar 包或 war包发布到本地仓库。
    从运行结果中,可以看出: 当后面的命令执行时,前面的操作过程也都会自动执行。

9.maven生命周期

在这里插入图片描述

10.maven概念模型图

在这里插入图片描述

11.idea集成maven插件

依据图片指示,选择本地 maven 安装目录,指定 maven 安装目录下 conf 文件夹中 settings 配置文件。
在这里插入图片描述
由于我们使用maven的骨架创建的时候,maven需要联网进行骨架的下载。如果断网了,则骨架不能正常下载,为了防止这种情况,我们可以配置本地下载,当已经联网下载过一次后,以后每次进行下载都会从本地下载,这样就解决了这个问题。
参数为:-DarchetypeCatalog=internal
在这里插入图片描述

13.用骨架创建maven的java工程

选择 idea 提供好的 maven 的java工程模板
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

14.用骨架创建maven的web工程

选择 idea 提供好的 maven 的web 工程模板
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
手动添加 src/main/java 目录,如下图右键 main 文件夹➡New➡Directory
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

15.maven工程_servlet实例_指定web资源包

手动修改在 src/main/java 目录下可以添加JSP文件
在这里插入图片描述
在这里插入图片描述

16.maven工程_servlet实例_导入项目依赖的jar包

在这里插入图片描述
在这里插入图片描述
要解决问题,就是要将 servlet-api-xxx.jar 包放进来,作为 maven 工程应当添加 servlet 的坐标,从而
导入它的 jar。直接打开 hello_maven 工程的 pom.xml 文件,再添加坐标。
在这里插入图片描述
添加依赖需要指定依赖 jar 包的坐标,但是很多情况我们是不知道 jar 包的的坐标或者本地仓库没有需要的jar包,可以通过如下方式查询和添加:https://mvnrepository.com/,将代码复制到工程的 pom.xml 文件即可。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

添加 tomcat7 插件
在 pom 文件中添加如下内容
在这里插入图片描述
此时点击 idea 最右侧 Maven Projects,就可以看到我们新添加的 tomcat7 插件。双击 tomcat7插件下 tomcat7:run 命令直接运行项目
在这里插入图片描述
自定义模板
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

<!DOCTYPE web-app PUBLIC
 "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
 "http://java.sun.com/dtd/web-app_2_3.dtd" >

<web-app>

    <servlet>
        <servlet-name>MyServlet</servlet-name>
        <servlet-class>com.itheima.servlet.MyServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>MyServlet</servlet-name>
        <url-pattern>/</url-pattern>
    </servlet-mapping>
</web-app>

<?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>com.itheima</groupId>
  <artifactId>maven_web</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <!--放置的都是项目运行所依赖的jar包-->
  <dependencies>
    <dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>servlet-api</artifactId>
      <version>2.5</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>javax.servlet.jsp</groupId>
      <artifactId>jsp-api</artifactId>
      <version>2.0</version>
      <scope>provided</scope>
    </dependency>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>4.12</version>
      <scope>test</scope>
    </dependency>
  </dependencies>

  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.tomcat.maven</groupId>
        <artifactId>tomcat7-maven-plugin</artifactId>
        <version>2.2</version>
        <configuration>
          <port>8888</port>
        </configuration>
      </plugin>
      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <configuration>
            <target>1.8</target>
            <source>1.8</source>
            <encoding>UTF-8</encoding>
          </configuration>
        </plugin>
    </plugins>
  </build>

</project>

<%--
  Created by IntelliJ IDEA.
  User: hasee
  Date: 2018/5/12
  Time: 23:34
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    hello maven
</body>
</html>

package com.itheima.servlet;

import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class MyServlet extends HttpServlet {
    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        doGet(request, response);
    }

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws javax.servlet.ServletException, IOException {
        request.getRequestDispatcher("/hello.jsp").forward(request, response);
    }
}

17.maven的java工程获取sql数据库数据

<?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>com.itheima</groupId>
    <artifactId>maven_mysql</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>5.1.6</version>
            <scope>runtime</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
    </dependencies>
</project>
package com.itheima.domain;

public class Items {
    private Integer id;
    private String name;

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

package com.itheima.dao.impl;

import com.itheima.dao.ItemsDao;
import com.itheima.domain.Items;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.List;

/**
 * 要想从数据库中取出数据
 * 必须有四个属性:数据库驱动,连接数据库的地址,数据库用户名称,数据库密码。
 */
public class ItemsDaoImpl implements ItemsDao {
    public List<Items> findAll() throws Exception{
        List<Items> list = new ArrayList<Items>();
        //先获取contection对象
        Connection connection = null;
        //获取真正操作数据的对象
        PreparedStatement pst = null;
        //执行数据库查询操作
        ResultSet rs = null;
        try {
            //加载驱动类
            Class.forName("com.mysql.jdbc.Driver");
            //先获取contection对象
            connection = DriverManager.getConnection("jdbc:mysql:///maven","root", "root");
            //获取真正操作数据的对象
            pst = connection.prepareCall("select * from items");
            //执行数据库查询操作
           rs = pst.executeQuery();
            //把数据库结果集转成java的List集合

            while (rs.next()){
                Items items = new Items();
                items.setId(rs.getInt("id"));
                items.setName(rs.getString("name"));
                list.add(items);
            }
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            connection.close();
            pst.close();
            rs.close();
        }

        return list;
    }
}

package com.itheima.test;

import com.itheima.dao.ItemsDao;
import com.itheima.dao.impl.ItemsDaoImpl;
import com.itheima.domain.Items;
import org.junit.Test;

import java.util.List;

public class ItemsTest {
    @Test
    public void findAll() throws  Exception{
        ItemsDao itemsDao = new ItemsDaoImpl();
        List<Items> list = itemsDao.findAll();
        for (Items items : list) {
            System.out.println(items.getName());
        }
    }
}

举报

相关推荐

0 条评论