Java 动态 Web 项目 index.html 在浏览器中打开时不显示任何内容

Java Dynamic Web Project index.html doesn't show anything when opened in browser

我正在尝试在 Eclipse 上使用 Java Servlet、Tomcat 和 HTML 创建一个 Web 应用程序。我的问题是,在我创建动态 Web 项目以及 web.xml 和 index.html 文件后,index.html 页面没有显示任何内容。

Servlet:

@WebServlet("/index.html")
public class AppServlet extends HttpServlet {
    private static final long serialVersionUID = 1L;
    private static final String HTML_START = "<html><body>";
    private static final String HTML_END = "</body></html>";

    public AppServlet() {

    }

    public void doGet(HttpServletRequest request, HttpServletResponse response)
        throws ServletException, IOException {            
        response.setContentType("text/html");
        PrintWriter out = response.getWriter();     
    }


    protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        doGet(request, response);
    }

}

index.html:

<!DOCTYPE html>
<html>
    <head>
        <meta charset="ISO-8859-1">
        <link rel="stylesheet" type="text/css" href="styling.css">
        <title>Test page</title>
    </head>

    <body>
        <h1 style="text-align:center;">Example text</h1>
        <div align="center">
            <textarea rows="12" cols="120" style="border-radius: 5px"></textarea>
        </div>
    </body>
</html>

当我直接打开 html 页面时(当我双击目录中的文件时)它显示得很好,但是当我从 Eclipse 启动服务器时它会将我重定向到 localhost:8080/MyProject/index.html, 没有显示.

每个 URL 都可以由 单个 组件处理:您的 URL 被解析为文件 index.html 或一个 servlet。在您的情况下,servlet 具有更高的优先级,并且此 servlet(不是文件 index.html)创建结果。您的 servlet 不会在 doGet 方法中创建任何内容。所以很自然地,响应是空的。

如果您希望此 URL 解析为文件 index.html,则在 servlet 中使用其他一些 URL 映射,例如 @WebServlet(" /bla")。然后当你调用.../MyProject/index.html时,你会得到文件index.html.

的内容

你抓住了那个 PrintWriter 但你没有对它做任何事情。在代码片段的第一行,您已经告诉服务器您将使用代码管理 /index.html ,因此它不应该从静态内容中获取它。然后你的代码什么都不产生,所以你正确地看到了你的代码产生了什么。

尝试在 PrintWriter out = response.getWriter() 之后添加这个;

out.println(HTML_START);
out.println("Hello World!");
out.println(HTML_END);