我刚刚开始学习servlet技术,目前正在尝试创建一个非常基本的Web应用程序。只是一些页面,尝试这个东西。我可以到达起始页面
/index.html
但我得到其他部分的 404 HTTP 状态代码:
请求的资源[/first]不可用 描述 源服务器未找到目标资源的当前表示或不愿意透露该表示存在。
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="4.0" 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">
</web-app>
package servlet;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
@WebServlet("/first")
public class FirstServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
PrintWriter pw = response.getWriter();
pw.println("<html>");
pw.println("<body>");
pw.println("Welcome to servlet");
pw.println("</body>");
pw.println("</html>");
pw.close();
}
}
上下文路径是
/
。我在 urlPatterns
注释处尝试了 WebServlet
。我正在 IntelliJ IDEA Community 下尝试,使用 Smart Tomcat 插件,安装了 Tomcat 10.1.24,并使用 Java 11。我运行了mvn clean package
。
启动应用程序后,我可以使用
http://localhost:8080/
访问 index.html,但无法访问 http://localhost:8080/first
.
我尝试寻找解决方案已经有一段时间了,但我没能做到。我也通读了这里的线程(至少尝试过),但没有找到它。从 Dockerfile 图像中,我尝试使用 Tomcat 9.0.89,但得到相同的 / 404 http 状态代码。
我想请您帮忙解决这个问题。如果我可以提供任何有用的附加相关信息,请告诉我。
非常感谢您提前提供的帮助。
此代码是非常古老的 servlet 技术,它不适用于 Tomcat 10.x。您可以与 Tomcat 9 或更低版本一起使用。