没有 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
作为参数,它可以读取从中提取自定义属性。
我得到了一个没有任何 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
作为参数,它可以读取从中提取自定义属性。