Java 中有哪些 HTML 模板选项可以替代从 servlet 代码进行 HTML 输出?

StackOverflow https://stackoverflow.com/questions/816077

  •  03-07-2019
  •  | 
  •  

给定以下 Hello World servlet,如何将 Hello World 输出从 servlet 代码中传输出来并将其放入某种 HTML 模板格式中?我想简单地从 servlet 调用模板并让它呈现我在模板中引用的 Java 变量 - 也许通过将“Hello World”字符串引用为 SprogzServlet 类中的类变量?

package boochy;

import java.io.IOException;
import javax.servlet.http.*;

@SuppressWarnings("serial")
public class SprogzServlet extends HttpServlet
{
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
            throws IOException
    {
        resp.setContentType("text/plain");
        resp.getWriter().println("Hello, world");
    }
}
有帮助吗?

解决方案

在进行 Java Web 开发时,很少会不使用某种 MVC 框架,该框架会将所有视图委托给 JSP(除了 PDF 输出和其他极端情况),因此您可以:

一些 Web 框架,例如 挂毯日本科学基金会 (“Java Server Faces”)有点像带有额外标签的 HTML 视图。

无论如何,JSP 最终只是编译为 servlet,并且往往是输出 HTML 的更方便的形式。一般来说,我会至少使用它们,而不是直接在 servlet 中编写一堆 out.println() 语句。

其他提示

我已经在一个非常小规模的内部网站上成功使用了Velocity多年。

易于使用且具有良好的清洁API。它非常好地处理了一系列活动。

好笑,我之前看过一个稍微类似的问题。您还可以通过 Quercus 将PHP页面用于Java中的页面呈现。

克莱图斯的建议非常正确。

Freemarker(或速度)是您“简单”使用的解决方案。需要基于模板的渲染。它们非常有效。您可以使用JSP推高复杂性阶梯。

我不同意这仅限于MVC模式。最简单的(显然这不适用于大型系统)您可以为所有请求提供相同的servlet服务,并选择速度/自由标记模板,并填充所需的上下文并呈现模板。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top