在 Java Servlet 中生成 HTML 响应

问题描述 投票:0回答:3

如何在 Java servlet 中生成 HTML 响应?

html servlets
3个回答
110
投票

您通常将请求转发到 JSP 进行显示。 JSP 是一种视图技术,它提供了一个用于编写普通 HTML/CSS/JS 的模板,并提供了借助标签库和 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 时会显示

消息:你好世界

在浏览器中。

这使 Java 代码免受 HTML 混乱的影响,并使 JSP 代码免受 Scriptlet 混乱的影响,从而大大提高了可维护性。要学习和练习有关 servlet 的更多信息,请继续访问以下链接。

还可以浏览 标记为 [servlet] 的所有问题的“常见问题”选项卡以查找常见问题。


35
投票

您需要有一个 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 的链接


1
投票

除了直接在从响应中获取的 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();
}
© www.soinside.com 2019 - 2024. All rights reserved.