一、创建一个空项目,并编写相关代码

使用IDEA创建一个空项目,名为hello-world

image-20220220164801216

在该项目根目录下分别创建src目录和classes目录,然后将src目录标记为代码的根目录:

image-20220220165206490

然后在src目录下创建HelloServlet类,并让其继承于HttpServlet类,但此时会发现根本引入不了HttpServlet类,原因是该类并非jdk中自带的,而是servlet-api.jar中的类,所以,我们还需将这个jar包引入:

image-20220220165833558

然后选择你本地的tomcat的lib下的servlet-api.jar,或者你本地下载好的该jar包。

我本地使用homebrew安装了tomcat,所以直接把tomcat下的该jar包引入进来。

image-20220220170410385

此时便可以正常import HttpServelt类了,重写其doGet方法,整体代码如下:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
import jakarta.servlet.http.HttpServlet;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;

import java.io.IOException;
import java.io.PrintWriter;
import java.util.Date;

public class HelloServlet extends HttpServlet {

    @Override
    public void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
        PrintWriter out = resp.getWriter();
        out.println(
                "<html>"
                        + "<body>"
                        + "Hello, world! now: " + new Date()
                        + "</body>"
                        + "</html");
    }
}

编译该类:

1
javac -classpath /opt/homebrew/Cellar/tomcat/10.0.16/libexec/lib/servlet-api.jar -d classes src/HelloServlet.java

这样编译后的class文件均放置在classes目录下。

二、在tomcat上创建web应用my-servlet-app

在tomcat的webapps目录下新建目录my-servlet-app,将来我们也可以在此处新建其他目录以放置其他应用。

在新建好的my-servlet-app目录下创建WEB-INF目录,再在WEB-INF目录下创建classes目录。

然后,将上一步中编译好的class文件HelloServlet.class复制到webapss/my-servlet-app/WEB-INF/classes目录下,然后在WEB-INF目录下创建web应用部署描述文件web.xml

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
<?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">

    <servlet>
        <servlet-name>Hello World Servlet</servlet-name>
        <servlet-class>HelloServlet</servlet-class>
    </servlet>

    <servlet-mapping>
        <servlet-name>Hello World Servlet</servlet-name>
        <!-- 注意下面的斜杠并非可加可不加,是一定要加的 -->
        <url-pattern>/hello</url-pattern>
    </servlet-mapping>
</web-app>

三、启动tomcat

我是用docker版的tomcat,启动后访问“http://localhost:8080/my-servlet-app/hello”即可看到效果:

1
Hello, world! now: Sun Feb 20 09:26:50 UTC 2022