gpt4 book ai didi

java - 从数据库动态创建 JSP 模板( View )

转载 作者:搜寻专家 更新时间:2023-11-01 03:07:13 27 4
gpt4 key购买 nike

我正在使用 Java 和 Spring MVC 开发应用程序。像往常一样,将一个 JSP 文件存储在/WEB-INF/view/文件夹中,作为所有请求的 View 。

通常我们有这个 JSP 硬编码,它也有一些代码来处理模型(标签和 EL)。到目前为止一切正常。

现在我不想对 JSP 进行硬编码,而是想从数据库中动态填充这个 JSP 文件。因此用户可以上传并选择不同的模板/主题/布局来显示他的页面。

这是解释我正在尝试做的事情的代码(我知道这不是方法,但仅用于说明目的)。

/WEB-INF/views/index.jsp

<%@ page import="com.example.domain.Template" %>
<%@ page import="com.example.dao.TemplateStore" %>

<!-- Following code is supposed to return complete JSP template from the database as uploaded by the user. -->

<%= TemplateStore.getUserTemplate("userTemplate") %>

我在网上搜索了这个主题,但找不到任何内容。

如能提供有关如何实现此目的的任何帮助,我们将不胜感激。

提前致谢。

重要提示:我几天前问过这个问题,但被一些成员标记为“离题”。我还不明白这个问题是如何偏离主题的 - https://stackoverflow.com/questions/18026092/creating-content-of-jsp-views-in-web-inf-views-dynamically-from-the-database .

最佳答案

如果要从数据库中动态获取 View 模板,则不应考虑 JSP。 JSP 被编译成 servlet 类,除了标准方式(静态文件位于您的 webapp 根目录下的某个地方)之外,几乎没有其他支持。

因此,只需考虑将 View 技术(至少对于动态部分)切换到一些通用模板库,如 VelocityFreemarker .这带来了安全奖励,因为在这样的模板中比在 JSP 代码中更容易被破坏。

您甚至可以支持多种 View 技术(可能是 Spring MVC 开箱即用支持的任何技术,JSP 除外)并允许您的用户在上传时选择模板类型。

然后您可以编写一个自定义 View 解析器,它将使用用户选择的模板委托(delegate)给适当的标准解析器(Velocity、Freemarker、XSLT,等等...)。

但是,如果 JSP 是一个硬性要求,我想 JSP(它应该在任何 servlet 容器中工作)的一个丑陋的解决方法可能是从数据库中获取内容并创建一个实际文件(如 WEB-INF/templates/${primarky-key}.jsp) 在你展开的 webapp 根目录下,然后 RequestDispatcher.forward() 到它。

关于java - 从数据库动态创建 JSP 模板( View ),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18141348/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com