【问题标题】:Java Servlet throws 404 [duplicate]Java Servlet 抛出 404 [重复]
【发布时间】:2022-01-15 01:00:50
【问题描述】:

大家好,我正在尝试制作一个返回 JSON 的简单 Java Servlet。 web.xml 位于 WEB-INF 目录中,如果我输入了链接 false 或类似的东西,我已经检查过了。 这是我的 ServletClass:

import java.io.*;
import javax.servlet.http.*;
import javax.servlet.annotation.*;

@WebServlet(name = "BetaAuthServlet", value = "/betaAuthServlet")
public class BetaAuthServlet extends HttpServlet {

    public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
        response.setContentType("application/json");
        response.setCharacterEncoding("UTF-8");
        PrintWriter out = response.getWriter();
        String message = "Test";
        out.print(message);
        out.flush();
    }
}

这是我的 web.xml:

<?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>BetaAuthServlet</servlet-name>
        <servlet-class>de.hanimehagen.tridentdevelopment.betaauth.BetaAuthServlet</servlet-class>
    </servlet>
    <servlet-mapping>
        <servlet-name>BetaAuthServlet</servlet-name>
        <url-pattern>/BetaAuthServlet</url-pattern>
    </servlet-mapping>
</web-app>

当我在 localhost:8080/betaAuthList 上启动应用程序时,出现 404 错误。我不确定我是否需要 index.jsp,但我认为我不需要它。 Tomcat 服务器应该可以正常工作。如果有人可以帮助我,那就太好了。 问候哈根

我找到了解决问题的方法: 我使用的是 Tomcat 版本 10。在我使用版本 9 之后,它可以工作了!

【问题讨论】:

  • 您好,欢迎您! “ROOT”(或哪个)应用程序的 WEB-INF 目录....编译的类在哪里?你是如何将它“介绍给 tomcat”的?
  • ..当你做@WebServlet时,你不需要/没有web.xml。这是一个"nice tutorial/article" ..just “打包”,将@webservlet 放入“战争”并部署它。
  • 您的 @WebServlet 和 web.xml 将路径显示为 /BetaAuthServletbetaAuthServlet - 末尾的段落说明您正在尝试获取 /betaAuthList

标签: java servlets


【解决方案1】:

这里有一些建议检查 - 这取决于您在 Tomcat 服务器中的配置。

假设您的代码被打包到 xyz.war。 xyz.war 中的所有路径都将具有相同的根路径,如果没有注册显式路径,Tomcat 可能会使用默认的xyz,因此您的 Web 应用程序下的所有 servlet 都将具有格式(酌情替换 xyz):

http://localhost:8080/xyz/someotherpaths

您已经指定了@WebServletweb.xml,但每个都给出了不同的servlet 路径/BetaAuthServlet/betaAuthServlet。如果您的 Tomcat 设置为使用 @WebServlet 注释自动扫描 Web 应用程序,请尝试以下设置:

http://localhost:8080/xyz/betaAuthServlet

如果您的 Tomcat 未设置为自动扫描 Web 应用程序,请尝试 web.xml 设置:

http://localhost:8080/xyz/BetaAuthServlet

【讨论】:

  • 嘿,我已经检查过了。我现在使用 Java Enterprise Webapplication Template 在 intellij 中创建了一个新项目。自动创建了一个“/hello-servlet”。如果我运行默认应用程序,/hello-servlet 也会抛出 404。Tomcat 设置也是从 intellij 自动创建的。所以我想知道为什么自动创建的应用程序有同样的问题。
猜你喜欢
  • 1970-01-01
  • 2010-09-09
  • 2015-09-01
  • 2011-03-16
  • 2018-06-06
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多