java - Ubuntu14.04 html 上的 Tomcat7 有效,但 servlet 出现 404 错误

标签 java tomcat ubuntu servlets http-status-code-404

我是 servlet 的新手。我在Ubuntu14.04上安装了Tomcat7,服务运行正常。但它为 servlet ( http://localhost:8080/hello/HelloServlet ) 提供 404(not found) 错误。应用程序中的 html 运行良好。 Tomcat 管理工具也是如此。

知道我做错了什么吗?

Tomcat webapps 结构: /var/lib/tomcat7/webapps

webapps
|-- ROOT
    |-- hello
    |   |-- index.html
    |   `-- WEB-INF
    |       |-- classes
    |       |   |-- HelloServlet.class
    |       |   `-- HelloServlet.java
    |       |-- lib
    |       `-- web.xml
    |-- index.html
    `-- META-INF
        `-- context.xml

web.xml:

<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns="http://java.sun.com/xml/ns/j2ee"
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd"
     version="2.5">
<servlet>
    <servlet-name>HelloServlet</servlet-name>
    <servlet-class>HelloServlet</servlet-class>
</servlet>

<servlet-mapping>
     <servlet-name>HelloServlet</servlet-name>
     <url-pattern>/HelloServlet</url-pattern>
</servlet-mapping>
</web-app>

HelloServlet.java:

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

@WebServlet(name="HelloServlet", urlPatterns={"/HelloServlet"})

public class HelloServlet extends HttpServlet{
  private String message;
  public void init() throws ServletException{
      message = "Hello World";
  }
  public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
      response.setContentType("text/html");
      PrintWriter out = response.getWriter();
      out.println("<h1>" + message + "</h1>");
  }
  public void destroy(){

  }
}

最佳答案

终于让它运行起来了:)

造成问题的是目录结构。应用程序目录应该就在“webapps/ROOT”目录之外。具体来说,直接将应用程序目录放在'webapps'下(似乎是Tomcat7和Ubuntu 14.04LTS的特定情况)

修正后的结构:

webapps
|-- ROOT
`-- hello
    |-- index.html
    `-- WEB-INF
        |-- classes
        |   |-- HelloServlet.class
        |   `-- HelloServlet.java
        |-- lib
        `-- web.xml

之前的结构(有错误):

webapps
|-- ROOT
    |-- hello
    |   |-- index.html
    |   `-- WEB-INF
    |       |-- classes
    |       |   |-- HelloServlet.class
    |       |   `-- HelloServlet.java
    |       |-- lib
    |       `-- web.xml
    |-- index.html
    `-- META-INF
        `-- context.xml

关于java - Ubuntu14.04 html 上的 Tomcat7 有效,但 servlet 出现 404 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32411364/

相关文章:

java - 开始记录 Tomcat 的最简单快捷的方法是什么?

java - Tomcat 一直要求输入密码和用户名

java - Spring:mvn clean tomcat:run 在命令行上运行但在 IntelliJ 上不运行

python - Ubuntu 和 Python : Time based scripting of multiple texts to speech

ubuntu - Dotnet 核心 Rider snap ubuntu msbuild

java - 在不知道大小的情况下上传到 Google 云端硬盘

java - 如何强制android启动LoginActivity

java - Netbeans 的 Ant 自动化

java - 检测失败: Resource not found

c++ - 如何在 64 位 Ubuntu 系统上安装简单的 Intel C/C++ 编译器?