5

我对 JSP 很陌生。到目前为止,处理流程似乎是 Java 先运行,然后填充 JSP 模板。

我想知道是否有一种方法可以从 Java 中使用 JSP 模板。我的意思是,假设我在类路径上有一个简单的“SimpleDiv.jsp”模板,如下所示:

<div id="${id}" class="${class}">
    ${content}
</div>

然后在任意 Java 文件中(甚至可能不在 servlet 上运行),我可以执行以下操作:

private String getDivHtml( id, html ) {
    Template simpleDiv = TemplateLoader.load("SimpleDiv.jsp");
    simpleDiv.set("id", id);
    simpleDiv.set("class", Whatever.CLASS_NAME);
    simpleDiv.set("content", html);

    return simpleDiv.toString();
}

这是一个非常简单的例子,所以不要被它的细节所困扰。主要问题是——我可以在 Java 中引入 JSP 模板并使其生成 HTML 内联吗?

4

4 回答 4

4

Freemarker 和 Velocity 在从模板生成内容方面非常流行,您可以尝试其中之一。由于 JSP 是作为 servlet 实现的(并且 JSP 规范将它们定义为 web 组件),因此它们与 servlet 容器相关联。

于 2013-09-18T16:37:37.000 回答
2

考虑这个不依赖于 servlet 的 JSP 子集:

http://jstp.sourceforge.net/manual.html

于 2013-09-18T16:57:25.110 回答
2

没有简单的方法可以使用纯 JSP 来完成此任务。网站上有相关的 Q/As 解释了如何做到这一点:

使用纯 JSP 的另一种选择是使用外部框架来完成任务,例如 Apache Tiles 和 SiteMesh(这里提到:JSP 模板实现(复合视图模式))。

如果可以,请升级到Facelets这是自 Java EE 6 以来的当前视图技术。该技术已经提供了内置模板系统,如此此处所述。

于 2013-09-18T16:41:35.313 回答
0

jsp是一个内层servlt,一个java类,一般执行完就输出HTML。

也许您应该将 jsp 文件视为纯字符串,“simpeDiv.set”方法只是进行替换工作:将 ${key} 替换为 ${value}

于 2013-09-18T16:38:08.577 回答