一、创建一个空项目,并编写相关代码
使用IDEA创建一个空项目,名为hello-world
:
在该项目根目录下分别创建src
目录和classes
目录,然后将src
目录标记为代码的根目录:
然后在src
目录下创建HelloServlet
类,并让其继承于HttpServlet
类,但此时会发现根本引入不了HttpServlet
类,原因是该类并非jdk中自带的,而是servlet-api.jar
中的类,所以,我们还需将这个jar包引入:
然后选择你本地的tomcat的lib
下的servlet-api.jar
,或者你本地下载好的该jar包。
我本地使用homebrew安装了tomcat,所以直接把tomcat下的该jar包引入进来。
此时便可以正常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
|