Servlet 访问子页面时出现问题 - HTTP 404 - Tomcat 10.1.124 - java 11

问题描述 投票:0回答:1

我刚刚开始学习servlet技术,目前正在尝试创建一个非常基本的Web应用程序。只是一些页面,尝试这个东西。我可以到达起始页/index.html,但我得到其他部分的 404 HTTP 状态代码:

消息请求的资源[/first]不可用 描述 源服务器未找到目标资源的当前表示或不愿意透露该表示的存在。

我的WEB-INF下的web.xml是这样的:

<?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>

我的FirstServlet.java是这样的:

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();
    }
}

上下文路径是 / 。我在 Webservlet 注释中尝试了 urlPattern。我正在 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 状态代码。

我想请您帮忙解决这个问题。如果我可以提供任何有用的附加相关信息,请告诉我。

非常感谢您提前提供的帮助。

maven servlets http-status-code-404 java-11 tomcat10
1个回答
0
投票

此代码是非常古老的 servlet 技术,它不适用于 Tomcat 10.x。您可以在 Tomcat 9 或更低版本中使用它。

© www.soinside.com 2019 - 2024. All rights reserved.