• 手写一个 servlet 并运行


    如果大家觉得文章有错误内容,欢迎留言或者私信讨论~

      今天我们的任务就是会到当初初学 Web 容器的时候,编写简单的 servlet,并在 tomcat 中运行起来。
      主要的步骤有:

    1. 下载并安装 Tomcat
    2. 编写一个继承 HttpServlet 的 Java 类
    3. 将 Java 类文件编译成 Class 文件
    4. 建立 Web 应用的目录结构,并配置web.xml
    5. 部署 Web 应用
    6. 启动 Tomcat
    7. 浏览器访问验证结果
    8. 查看 Tomcat 日志

      下面让我们一步步来完成整个过程。

    1. 下载并安装 Tomcat

      最新版本的 Tomcat 可以直接在官网上下载,根据你的操作系统下载相应的版本,这里我使用的是 Mac 系统,下载完成后直接解压,解压后的目录结构如下。
    在这里插入图片描述

      下面简单介绍一下这些目录:

    /bin:存放 Windows 或 Linux 平台上启动和关闭 Tomcat 的脚本文件。
    
    /conf:存放 Tomcat 的各种全局配置文件,其中最重要的是server.xml。
    
    /lib:存放 Tomcat 以及所有 Web 应用都可以访问的 JAR 文件。
    
    /logs:存放 Tomcat 执行时产生的日志文件。
    
    /work:存放 JSP 编译后产生的 Class 文件。
    
    /webapps:Tomcat 的 Web 应用目录,默认情况下把 Web 应用放在这个目录下。
    

    2. 编写一个继承 HTTPServlet 的 Java 类

      javax.servlet包提供了实现 Servlet 接口的 GenericServlet 抽象类。这是一个比较方便的类,可以通过扩展它来创建 Servlet。但是大多数的 Servlet 都在 HTTP 环境中处理请求,因此 Servlet 规范还提供了 HttpServlet 来扩展 GenericServlet 并且加入了 HTTP 特性。我们通过继承 HttpServlet 类来实现自己的 Servlet 只需要重写两个方法:doGet 和 doPost。

      因此今天我们创建一个 Java 类去继承 HttpServlet 类,并重写 doGet 和 doPost 方法。首先新建一个名为MyServlet.java的文件,敲入下面这些代码:

    import javax.servlet.ServletException;
    import javax.servlet.http.HttpServlet;
    import javax.servlet.http.HttpServletRequest;
    import javax.servlet.http.HttpServletResponse;
    import java.io.IOException;
    import java.io.PrintWriter;
    
    /**
     * o(* ̄▽ ̄*)ブ)
     * Created by 小林 on 2022/9/28
     *
     * @Description:
     **/
    public class MyServlet extends HttpServlet {
    
        @Override
        protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("MyServlet 在处理get()请求...");
            PrintWriter out = resp.getWriter();
            resp.setContentType("text/html;charset=utf-8");
            out.println("My Servlet! ");
        }
    
    
        @Override
        protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
            System.out.println("MyServlet 在处理post()请求...");
            PrintWriter out = resp.getWriter();
            resp.setContentType("text/html;charset=utf-8");
            out.println("My Servlet! ");
        }
        
    }
    

      如果此时你发现没有引入 HttpServlet 等类,可以手动添加 Tomcat 的 servlet-api.jar 包,需要把 Tomcat lib 目录下的servlet-api.jar拷贝到当前目录下,或者像我一样直接在 pom.xml 文件中添加:

    
    <dependency>
        <groupId>javax.servletgroupId>
        <artifactId>javax.servlet-apiartifactId>
        <version>3.1.0version>
        <scope>providedscope>
    dependency>
    

      这个 Servlet 完成的功能很简单,分别在 doGet 和 doPost 方法体里返回一段简单的 HTML。

    3. 将 Java 文件编译成 Class 文件

      接着我们执行编译命令:

    javac -cp ./servlet-api.jar MyServlet.java
    

      编译成功后你就可以得到一个叫 MyServlet.class 的文件了

    4. 建立 Web 应用的目录结构

      之前我们提到 web 应用具有一定的目录结构,所以我们按照规定建立 web 应用文件夹,名字就叫 MyWebApp,就像下面这样:

    
    MyWebApp/WEB-INF/web.xml
    MyWebApp/WEB-INF/classes/MyServlet.class
    

      然后在web.xml中配置 Servlet,内容如下:

    
    <?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_4_0.xsd"
      version="4.0"
      metadata-complete="true">
    
        <description> Servlet Example. </description>
        <display-name> MyServlet Example </display-name>
        <request-character-encoding>UTF-8</request-character-encoding>
    
        <servlet>
          <servlet-name>myServlet</servlet-name>
          <servlet-class>MyServlet</servlet-class>
        </servlet>
    
        <servlet-mapping>
          <servlet-name>myServlet</servlet-name>
          <url-pattern>/myservlet</url-pattern>
        </servlet-mapping>
    
    </web-app>
    

      你可以看到在web.xml配置了 Servlet 的名字和具体的类,以及这个 Servlet 对应的 URL 路径。请你注意,servlet 和 servlet-mapping 这两个标签里的 servlet-name 要保持一致。

    5. 部署 Web 应用

      Tomcat 应用的部署非常简单,将这个目录 MyWebApp 拷贝到 Tomcat 的安装目录下的 webapps 目录即可。

    6. 启动 tomcat

      找到 Tomcat 安装目录下的 bin 目录,根据操作系统的不同,执行相应的启动脚本。如果是 Windows 系统,执行startup.bat.;如果是 Linux 系统,则执行startup.sh。

    7.访问浏览器

      在浏览器里访问这个 URL:http://localhost:8080/MyWebApp/myservlet,你会看到:

    My Servlet!
    

      这里需要注意,访问 URL 路径中的 MyWebApp 是 Web 应用的名字,myservlet是在web.xml里配置的 Servlet 的路径。

  • 相关阅读:
    muduo源码剖析之EventLoop事件循环类
    疫情之下的裁员浪潮,7点建议帮你斩获心仪offer
    JavaEE-http/https/Tomcat(上)
    一步一步教你如何写开发文档
    关于在word中使用Axmath的报错的解决
    【第91题】JAVA高级技术-网络编程10(简易聊天室5:接收和发送Socket)
    MATLAB数字
    罗马数字转整数[简单]
    【DevPress】V2.4.2版本发布,内容详情页优化
    Linux之I2C驱动
  • 原文地址:https://blog.csdn.net/qq_43654226/article/details/127097061