Maven配置 JavaWeb-Day02

5. Maven

为什么要学?

先去查一查自己的IDEA版本和最高能兼容那个版本的maven

  • IDEA 2021 兼容maven 3.8.1及之前的所用版本
  • IDEA 2020 兼容Maven 3.6.3及之前所有版本

1.在javaweb开发中,需要使用大量的jar包,我们手动去导入会很麻烦

2.那么如何能够让一个东西自动帮我们导入和配置这个jar包呢,Maven可以做到!

5.1 Maven项目构建管理工具

Maven的核心思想:约定大于配置!约定大于配置!约定大于配置!

Maven 是一个项目管理工具,可以对 Java 项目进行构建、依赖管理。

  • 有约束,不要去违反!

5.2 下载安装

  • 环境搭建

这里我下载版本为3.8.1的:https://archive.apache.org/dist/maven/maven-3/3.8.1/source/
在这里插入图片描述
下载完成后解压到电脑环境目录下即可!

5.3 配置环境变量

在我们的系统环境变量中,添加如下的配置:

  • M2_HOME maven目录下的**bin目录 ** (注意:这里写成M2_HOME是因为在后面的学习中有用到,方便日后使用!)
  • MAVEN_HOME maven的目录
  • 在path中引用:%MAVEN_HOME%\bin
    在这里插入图片描述
    配置成功!
    在这里插入图片描述

5.4 阿里云镜像

  • 作用:加速我们的下载

  • maven阿里云镜像->粘贴到mirror中

直接到阿里云镜像官网查看:https://developer.aliyun.com/mirror/maven?spm=a2c6h.13651102.0.0.7be81b11UzF1js

<mirror>
    <id>aliyunmaven</id>
    <mirrorOf>*</mirrorOf>
    <name>阿里云公共仓库</name>
    <url>https://maven.aliyun.com/repository/public</url>
</mirror>

在这里插入图片描述
在这里插入图片描述

5.5 本地仓库

即在本地的仓库,也有远程仓库

  • 建立一个本地仓库
    在这里插入图片描述
    在setting.xml中,配置这一项,要提前在apache-maven-3.8.1下建立maven-repo目录:
<localRepository>E:\Maven\apache-maven-3.8.1\maven-repo</localRepository>

5.6 在IDEA中使用Maven

  • 在IDEA中使用Tomcat(回顾)
5.6.1步骤
  • 关闭当前项目
  • 在all setting下进入
  • 找到maven
  • 更改下图所示
    在这里插入图片描述
  • 不成功的话,更改成功
    在这里插入图片描述
  • 要解决的问题

方案一:默认创建maven项目是下载网络上的一个文件archetype-catalog.xml,该文件的大小有5-6M,下载的速度很慢,导致创建过程也变得很慢。所以我们需要配置一下。当然,这里解决的方法有三种,这里我选择最容易的一种,就是修改maven的VM Options参数配置。

方案二:创建Maven项目时,添加配置参数:-DarchetypeCatalog=internal

在这里插入图片描述

  • 新建maven项目时选择
    在这里插入图片描述
  • 成功
    在这里插入图片描述
    5.6.2 配置
    在这里插入图片描述

5.7 创建一个干净的maven项目

即:不使用模板创建!
在这里插入图片描述
在这里插入图片描述
下面这个是只在选择了web应用的模板才有的:
在这里插入图片描述
下面,我们选择干净的maven项目,在项目中的main目录下,创建java,resources目录

并把Java目录标记为源码目录,让其编程蓝色,可以编写代码
方法一:
在这里插入图片描述

5.8 标记文件夹功能

方法二:打开modules的标记文件夹功能进行标记
在这里插入图片描述

5.9 在IDEA中配置Tomcat

注意:

这个是没有使用webapp模板创建的干净的maven项目,如果使用的是含模板创建的Maven项目,从第6步开始可以选择war包,而不用像6-9那样去添加war包!

告诉 idea 使用的是 Tomcat 服务器

  • 第1步
    在这里插入图片描述
    为 Tomcat 服务器设置开关

  • 第2步

在这里插入图片描述

  • 第3步
    在这里插入图片描述

  • 第4步
    在这里插入图片描述

  • 第5步 出现这个就说明对了
    在这里插入图片描述
    将网站交给Tomcat管理

  • 第6步
    在这里插入图片描述

  • 第7步

添加工件
在这里插入图片描述

  • 第8步
    在这里插入图片描述
    在这里插入图片描述
  • 第9步

导入 Tomcat 的 jar 包

5.10 编辑pom.xml

  • 添加依赖项
    在这里插入图片描述
    在build中配置resources节点,来防止我们资源导出失败的问题学习Mybatis会遇到

  • 背景:

    在Maven项目中,资源配置文件默认是放在resources目录下的。但有时我们在编写项目时,配置文件可能会被我们放置到别的目录,Maven由于它的约定大于配置,所以默认的maven项目在构建编译时不会把我们其他目录下的配置文件导出到target目录中,从而导致配置文件无法导出或者生效的问题。解决方案:在项目的pom.xml文件中手动配置资源过滤让它把src/main/java目录下的.properties和.xml文件也能够被导出。

    添加这一段:

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.properties</include>
                    <include>**/*.xml</include>
                </includes>
                <filtering>true</filtering>
            </resource>
        </resources>
    </build>

在这里插入图片描述

5.11 Servelt

  • 首先到Tomcat的安装目录找到bin目录,启动Maven
  • 访问examples目录下的例子:http://localhost:8080/examples/

看到:
在这里插入图片描述

点进去后,可以看到例子,这里我选择hello world例子,我们点击他的源码:
在这里插入图片描述

  • 在idea中模仿编写这个案例
    发现没有HttpServelt这个jar包,右键添加Maven依赖
    在这里插入图片描述
    但是,Maven中,也没有搜索到这个包,是因为我们第一次使用,本地仓库里面,也没有这个包
    在这里插入图片描述
    下面,我们去maven仓库找

5.12 maven仓库的使用

在 Maven 的术语中,仓库是一个位置(place)。Maven 在 Maven 中,任何一个依赖、插件或者项目构建的输出,都可以称之为构件。Maven 仓库能帮助我们管理构件(主要是JAR),它就是放置所有JAR文件(WAR,ZIP,POM等等)的地方。

Maven 仓库有三种类型:

  • 本地(local)
  • 中央(central)
  • 远程(remote)
    在这里插入图片描述
    注意:

运行 Maven 的时候,Maven 所需要的任何构件都是直接从本地仓库获取的。如果本地仓库没有,它会首先尝试从远程仓库下载构件至本地仓库,然后再使用本地仓库的构件。

仓库地址https://mvnrepository.com/
在这里插入图片描述
发现搜不到:
在这里插入图片描述
进而联想到,Tomcat中的案例能够运行,那么我们就去Tomcat中的lib目录下去找相应的jar包,猜想:servlet相关的jar包
Tomcat中的lib目录:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
复制代码,添加到项目依赖 pom.xml

<dependency>
      <groupId>javax.servlet</groupId>
      <artifactId>javax.servlet-api</artifactId>
      <version>4.0.1</version>
<!--      scope作用域:生产   把他注释掉-->
<!--      <scope>provided</scope>-->
    </dependency>

刷新一下maven,然后打开依赖项:
在这里插入图片描述

  • 导入我们的包
    在这里插入图片描述
  • 好了可以写代码了

代码:

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {

        //设置响应的类型:html
        resp.setContentType("text/html");
        //获取响应的输出流
        PrintWriter out = resp.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>Hello World!</title>");
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello World!</h1>");
        out.println("</body>");
        out.println("</html>");

    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

下面会介绍怎么访问到这个servlet里面的代码,输出 helloworld!

5.13 配置web.xml

首先:
在这里插入图片描述

  • 然后启动Tomcat,默认访问的是index.jsp
    在这里插入图片描述
  • 那么,如何访问webapp下的html文件呢?
    先新建:
    在这里插入图片描述
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<div>
    <h1>
        测试一下!
    </h1>
</div>
</body>
</html>

在后面追加header.html,访问一下:http://localhost:8080/viraha/header.html

在这里插入图片描述

  • 那么如何访问JSP中的代码,输出helloworld 呢?

我们现在来访问一下,访问servlet里面的helloworld:http://localhost:8080/viraha/jori
发现报错500
在这里插入图片描述
注意:由于这里我用到的Tomcat版本是Tomcat10 ,会报错!

解决方法是,有两个:

1 据了解,可以换成Tomcat9版本的,再重新配置一下就行了!

2 我们根据报错的提示,来得到下一种解决方法!

提示无法将**javax.servlet.http.HttpServlet 转化为jakarta.servlet.http.HttpServlet,**那么我们把 这个包替换掉就行!

或者将javax.servlet.http.HttpServlet这个包用jakarta.servlet.http.HttpServlet替换了,解决Tomcat10报500的问题!

方法:

到maven仓库中搜索:jakarta.servlet 注意,选择5.0.0

   <dependency>
      <groupId>jakarta.servlet</groupId>
      <artifactId>jakarta.servlet-api</artifactId>
      <version>5.0.0</version>
    </dependency>

或者点这个链接进入,直接拷贝:
https://mvnrepository.com/artifact/jakarta.servlet/jakarta.servlet-api/5.0.0

servelt代码替换成这个(替换这一段,免得报错!):

public class HelloServlet extends HttpServlet {
    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //设置响应的类型:html
        resp.setContentType("text/html");
        //响应编码的类型
        resp.setCharacterEncoding("utf-8");//识别中文
        //获取响应的输出流
        PrintWriter out = resp.getWriter();
        out.println("<html>");
        out.println("<head>");
        out.println("<title>你好世界!</title>");//这里改动了 
        out.println("</head>");
        out.println("<body>");
        out.println("<h1>Hello World! 你好世界!</h1>");
        out.println("</body>");
        out.println("</html>");
    }

    @Override
    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        super.doPost(req, resp);
    }
}

接着访问:http://localhost:8080/viraha/jori

注意:这里是viraha,是因为在配置Tomcat时,这里加了虚拟路径的映射
jori是在配置web.xml的时候加的,看上面第一张图的请求路径!

虚拟路径的映射:
在这里插入图片描述
访问成功了:
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值