Maven项目的配置

一 . 创建项目

1 . 创建一个 maven 项目

image-20230403103257152

2 . 创建好 maven 项目的目录结构

image-20230417083113045

image-20230403103459775

3 . 观察 maven 的控制面板

image-20230403103626578

二 . 引入依赖

4 .Maven 项目创建完毕后, 会自动生成一个 pom.xml 文件. 我们需要在 pom.xml 中引入 Servlet API 依赖的 jar 包 , 需要在maven 的中央仓库去下载。

maven中央仓库下载地址!

扫描二维码关注公众号,回复: 15193242 查看本文章

image-20230403103909269

此处我们一般选择 3. 1 版本的进行下载 (注意这里的版本要匹配jdk8;tomcat8.5,servlet3.1)

复制下面这段代码到 idea 中的 pom.xml 中

image-20230403104430017

首先需要在 pom.xml 中创建 标签对 ,然后将复制好的Servlet坐标依赖进行粘贴进标签对中 , 该标签对中也可存放多个依赖 。

image-20230403105340361

<dependency>
       <groupId>javax.servlet</groupId>
          <artifactId>javax.servlet-api</artifactId>
             <!-- servlet 版本和 tomcat 版本有对应关系,切记 -->
                <version>3.1.0</version>
    <!-- 这个意思是我们只在开发阶段需要这个依赖,部署到 tomcat 上时就不需要了 -->
        <scope>provided</scope>
 </dependency>

首次使用 maven 时 ,可能会爆红 ,需要手动刷新进行导入

image-20230403112244041

此时我们 maven 项目的相关依赖已经成功导入

image-20230403105913425

附 : 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>org.example</groupId>
    <artifactId>demo_project</artifactId>
    <version>1.0-SNAPSHOT</version>

    <dependencies>
        <!-- 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>
    </dependencies>
</project>

三 . 创建目录

创建maven 项目的时候虽然已经自动创建了一些目录,但是使用maven开发web项目还需要借助一个目录即 webapp目录 。

1 . 在 main 目录下单独创建一个webapp 目录

image-20230403111756737

2 . 在webapp中创建WEB-INF目录 , 并在下边新建一个 web.xml

image-20230403112411190

3 . 给 web.xml 中写入指定配置

<!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>
           <display-name>Archetype Created Web Application</display-name>
        </web-app>

导入指定代码之后,可能会出现代码爆红的现象,但是此处的爆红并不会影响后续的操作

四 . 编写代码

在 java 目录下方创建一个 helloservlet 类, 并使该类继承自 HttpServlet 类,并重写相关的方法

image-20230403113229078

这些方法是 Servlet api 中HttpServlet 提供的针对不同的响应和请求使用的 , 当 tomcat 收到了 get 请求就会调用此处的doGet( ) 方法 。

  • doGet()

image-20230403113648855

doGet 的参数有两个, 分别表示收到的 HTTP 请求 和要构造的 HTTP 响应. 这个方法会在Tomcat收到GET请求时触发 .

  • req 是 tomcat 针对请求 ,已经解析好,构造好了的
  • resp则是一个空的对象(无属性的对象)

重写doGet() 方法

@Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
    
    
        System.out.println("hello");
        resp.getWriter().write("hello");
    }
  • resp.getWriter()会获取到一个流对象,获取到的对象会可以使用 write() 方法写入一些数据,写入的数据就会被构造成一个 http 响应的 body 部分 ,tomcat 就会将响应转化为字符串然后返回给浏览器 。

  • 添加注解

image-20230405103907342

注解是一中语法糖 , 通常的作用是针对某一个类/方法 ,进行额外的解释说明,赋予这个类/方法一种额外的功能/ 含义 , 此处的注解是当前的类和 http 请求的路径关联起来,路径与 servlet 类之间是一对一的关系 。

五 . 打包程序

常见的 .class 构成的压缩包使用的是 .jar 包,但是此处我们需要使用.war包,一种 tomcat 专属的用来描述 webapp 的程序 , 一个war 包就是一个 webapp , 默认情况下 maven 打的是 jar 包, 所以需要向 pom.xml 中添加以下配置程序:

    <packaging>war</packaging>
    <build>
        <finalName>hello</finalName>
        // 此处的 finalName 指的是打包后的名字,如果为空则默认使用artifactId+version来作为打包后的名称
    </build>

配置程序修改完成之后,需要使用 package 进行打包 。

image-20230405103923807

双击 package , 当出现 BUILD SUCCESS 时打包完成 。

image-20230417083747966
image-20230405103940353

六 . 部署

把 war 包拷贝到 Tomcat 的 webapps 目录下

image-20230405103947902找到tomcat 目录下的startup.bat启动tomcat

image-20230405104000385

显示如下字样则启动成功

image-20230417083817654

七 . 验证程序

在浏览器中输入相对应的地址

http://127.0.0.1:8080/hello/helloservlet

image-20230405104010893

这里的第一个 hello 指的是 context-path 第二个 helloservlet 指的是 Servlet path , 下图当中上方指的是 servlet path 下方指的是 context path

image-20230405104020123

上述七个步骤是针对一个新的项目来设计的, 当项目创建好了之后,后续只需要修改代码,前三个步骤就可以省略了;从4-7即可;重新部署的时候,不一定需要重启tomcat;

刚才在浏览器输入 url 之后 ,浏览器就构造了一个 对应的 http GET请求,发给了tomcat , tomcat就根据第一级路径确定了具体的 webapp ,根据第二季路径就确定了具体调用的是哪一个类 。

八 . smart tomcat使用

有没有什么能够解决掉打包部署的方法呢?当然

使用 idea 的插件可以省略掉5 . 6 步骤 , 下面我们介绍一下 idea 当中的插件 smart tomcat 的用法 。

step1、打开idea,file->settings->plugin;在搜索栏搜索smart tomcat;

image-20230405104027956

step2、第一次使用需要配置一下 , 设置一下相关的参数

image-20230405104032865

image-20230405104044072

设置完毕之后 , apply 后 ok 即可 。

image-20230405104057770

点击导航栏中的 三角按钮 , 即可开始运行 , 这里的smart tomcat 是通过另一种方式来启动 tomcat 的 ,部署的程序效果与打包后再部署相同

image-20230405104110226

idea 直接调用 tomcat ,让 tomcat 加载当前项目中的目录,这个过程没有打 war 包,也没有拷贝,更没有解压缩 。

上述的两种部署,其实是 tomcat 的两种运行方式 ,

  • 如果是直接拷贝 war 包进行部署 ,context path 就是war包名
  • 如果是使用 smart tomcat 方式进行部署,则一级路径 context path是可以进行配置的,默认情况下就是项目名。

九 . 错误分析

  • 出现 404

    • 路径错误

    检查 url 中的 content-path , servlet-path 等相关路径 。
    在这里插入图片描述
    image-20230405104128682

  • webapp 没有被正确部署

web.xml 内容错了 , 文件名错了, 文件路径错了等

  • 出现 405

比如浏览器发送了一个 get 请求 , 但是代码中没有重写 doGet() 方法 , 并且super.doGet()没有删除的情况下就会出现 405

  • 出现500 ,代码抛出异常了

  • 出现空白页面 : 没有写resp.getWriter().write;

  • 出现无法访问此网站 , tomcat 没有启动

猜你喜欢

转载自blog.csdn.net/m0_56361048/article/details/130191881