0
点赞
收藏
分享

微信扫一扫

创建一个maven项目使用HttpServlet在tomcat服务器上实现一个动态页面

萨摩斯加士奇 2022-02-20 阅读 69

👍 👎 💯 👏 🔔 🎁 ❓ 💣 ❤️ ☕️ 🌀 🙇 💋 🙏 💦 💩 ❗️ 💢
————————————————

文章目录


知识点

maven简介

  • Maven是一种用于软件项目管理的工具,用来管理项目的构建,汇报及文档生成等功能
  • 依赖管理

maven作用

使用IDEA创建一个maven项目

在这里插入图片描述

  • 然后一路finish直到出现如下页面表示创建成功
    在这里插入图片描述

main文件配置

在这里插入图片描述

  • Test用于测试代码,resources用于提供资源的文件,java写源代码

pom.xml文件配置

  • 导入HttpServlet的jar包
    <!-- 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>

  • 导入MySQL的包
    <!-- 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>

  • 这是最后我们导出的war包的配置
  <groupId>org.example</groupId>
  <artifactId>20200712</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  • 这是一些插件,第一行的finalName是war包的名字
<build>
    <finalName>listen</finalName>
    <pluginManagement><!-- lock down plugins versions to avoid using Maven defaults (may be moved to parent pom) -->
      <plugins>
        <plugin>
          <artifactId>maven-clean-plugin</artifactId>
          <version>3.1.0</version>
        </plugin>
        <!-- see http://maven.apache.org/ref/current/maven-core/default-bindings.html#Plugin_bindings_for_war_packaging -->
        <plugin>
          <artifactId>maven-resources-plugin</artifactId>
          <version>3.0.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.8.0</version>
        </plugin>
        <plugin>
          <artifactId>maven-surefire-plugin</artifactId>
          <version>2.22.1</version>
        </plugin>
        <plugin>
          <artifactId>maven-war-plugin</artifactId>
          <version>3.2.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-install-plugin</artifactId>
          <version>2.5.2</version>
        </plugin>
        <plugin>
          <artifactId>maven-deploy-plugin</artifactId>
          <version>2.8.2</version>
        </plugin>
      </plugins>
    </pluginManagement>
  </build>
</project>

写实现代码

  • 在main文件里创建java文件继承HttpServlet
  • 按照请求报文方法重写doXX方法(如果请求是get方法,就重写doGet方法)
    在这里插入图片描述
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;

public class HttpServletCal extends HttpServlet{

    @Override
    protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
        //获取请求中的数据
        //getParameter得到的都是String类型的。用于读取提交的键值对中的值(http://a.jsp?id=123中的123)
        String aStr = req.getParameter("a");
        String bStr = req.getParameter("b");
        int ret = Integer.parseInt(aStr) + Integer.parseInt(bStr);
        //将结果写回到响应报文中
        resp.getWriter().write("<h1>ret=" + ret + "</h1>");
    }
}


配置web.xml文件

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
         xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee
                      http://xmlns.jcp.org/xml/ns/javaee/web-app_3_1.xsd"
         version="3.1"
         metadata-complete="true">
  
  <servlet>
    <servlet-name>HttpServletCal</servlet-name>
    <servlet-class>package.HttpServletCal</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>HttpServletCal</servlet-name>
    //特别注意这个pattern的前面要加上“/”
    <url-pattern>/cal</url-pattern>
  </servlet-mapping>

</web-app>


在这里插入图片描述

这四个的目的就在于将Servlet的类和url关联起来,这样后续tomcat收到HTTP请求后,发现url中带有的路径与web.xml路径相吻合,就会找到对应的servlet的代码

生成war包

在这里插入图片描述

  • maven的生命周期
  • 打成功的war包在taget中找

在这里插入图片描述

部署到Tomcat

  • 直接把war包拷贝到Tomcat的webapps目录中即可(一般Tomcat会自动检测到你的war包)

    出现这样说明部署成功

tomcat基本原理

在这里插入图片描述

Tomcat启动/初始化

  1. 会创建一个Socket对象绑定端口号(一般是8080),然后扫描然后扫描webapps(把每个webapps加载到内存中)
  2. 这里主要加载对应的web.xml文件
  3. 创建一个单独的线程,监控webapps目中的webapp的变化,如果有就会自动加载

处理过程

  1. 收到GET请求处理URL比如我的(lmp是war包的名字对应 pom.xml中的finalName)在这里插入图片描述
  2. 根据一级路径确认是webapp中的哪个目录
  3. 再根据二级路径/cala 找到对应的servlet的类的名字
  4. 根据类的名字进行类加载,也就是反射机制得到该类
  5. 初次加载完毕,会调用init方法(如果已经加载了,后续就不需要加载了)
  6. 调用该类的service方法,service方法会根据Http请求中的方法,决定调用对于doXX方法(这也是我们需要重写doXX方法的原因)

先赞后看,养成习惯!!!^ _ ^♥♥♥
每天都更新知识点哦!!!
码字不易,大家的支持就是我坚持下去的动力。点赞后不要忘记关注我哦!

举报

相关推荐

0 条评论