【发布时间】:2011-01-23 04:18:24
【问题描述】:
如何在 Java servlet 中生成 HTML 响应?
【问题讨论】:
如何在 Java servlet 中生成 HTML 响应?
【问题讨论】:
您通常将请求转发到 JSP 以进行显示。 JSP 是一种视图技术,它提供了一个模板来编写普通的 HTML/CSS/JS,并提供了在 taglibs 和 EL 的帮助下与后端 Java 代码/变量交互的能力。您可以使用 JSTL 之类的标签库来控制页面流。您可以在任何请求、会话或应用程序范围内将任何后端数据设置为属性,并在 JSP 中使用 EL(${} 事物)来访问/显示它们。您可以将 JSP 文件放在 /WEB-INF 文件夹中,以防止用户在不调用预处理 servlet 的情况下直接访问它们。
启动示例:
@WebServlet("/hello")
public class HelloWorldServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String message = "Hello World";
request.setAttribute("message", message); // This will be available as ${message}
request.getRequestDispatcher("/WEB-INF/hello.jsp").forward(request, response);
}
}
而/WEB-INF/hello.jsp 看起来像:
<!DOCTYPE html>
<html lang="en">
<head>
<title>SO question 2370960</title>
</head>
<body>
<p>Message: ${message}</p>
</body>
</html>
打开 http://localhost:8080/contextpath/hello 时会显示
消息:Hello World
在浏览器中。
这使 Java 代码免于 HTML 混乱,并大大提高了可维护性。要学习和练习更多关于 servlet 的知识,请继续访问以下链接。
也可以浏览the "Frequent" tab of all questions tagged [servlets] 查找常见问题。
【讨论】:
你需要有一个 doGet 方法:
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException
{
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("<html>");
out.println("<head>");
out.println("<title>Hola</title>");
out.println("</head>");
out.println("<body bgcolor=\"white\">");
out.println("</body>");
out.println("</html>");
}
您可以看到this 链接以获得一个简单的 hello world servlet
【讨论】:
除了直接在从响应中获取的 PrintWriter 上写入 HTML(这是从 Servlet 输出 HTML 的标准方式),您还可以使用 RequestDispatcher 将 HTML 片段包含在外部文件中:
public void doGet(HttpServletRequest request,
HttpServletResponse response)
throws IOException, ServletException {
response.setContentType("text/html");
PrintWriter out = response.getWriter();
out.println("HTML from an external file:");
request.getRequestDispatcher("/pathToFile/fragment.html")
.include(request, response);
out.close();
}
【讨论】: