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);
我正在尝试在 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);