没有 MVC 的 Freemarker 和 JSP

Freemarker and JSP without MVC

我得到了一个没有任何 MVC 的网站,只有普通的旧 JSP 和一些内联 类。 (调用页面如index.jsp) 出于测试目的,我可以让 freemarker 在单个 jsp 文件上工作。像配置一样,在同一页面创建数据模型和template.process。

我的问题是我不知道如何为整个网站实施 freemarker。 比如做一次配置? 在每个 jsp 中获取相同的配置实例?这样我就可以得到模板和过程

此外,我听说 <@include_page path="path/to/some.jsp"/> 仅适用于 FreemarkerServlet。我想知道我是否可以在我的案例中使用此功能。

我做了 google 并且每个结果都与 servlet 和 mvc 相关。 希望这里有人可以给我一些想法。 T

非常感谢。

每个目的你应该只有一个 Configuration 实例(比如网页呈现是一个目的,电子邮件呈现是另一个目的);这对性能至关重要。如果您从 JSP 页面调用 FreeMarker(如果我理解得很好),您可以将初始化的 Configuration 对象放入应用程序范围的属性(a.k.a。SerlvetContext属性)。

@include_page 是由FreemarkerServlet 提供的自定义指令。但是,它只是一个自定义指令,您可以通过实现 TemplateDirectiveModel 来编写另一个指令。棘手的部分是将与 servlet 相关的对象(如当前请求)传递给它。通常,您应该将自定义属性放入 freemarker.core.Environment 对象(参见其 API),然后由于 TemplateDirectiveModel 接收 Environment 作为参数,它可以读取从中提取自定义属性。