java – 从数据库动态创建JSP模板(视图)

我正在使用Java和Spring MVC开发应用程序.像往常一样,将一个JSP文件存储在/ WEB-INF / view /文件夹中,该文件用作所有请求的View.通常我们有这个JSP硬编码,也有一些代码来处理模型(标签和EL).事情一直很好,直到这一...

我正在使用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.

解决方法:

如果要从数据库中动态获取视图模板,则不应考虑JSP. JSP被编译成servlet类,并且除了标准方式(webapp根目录下的某个静态文件)之外,几乎不支持这样做.

因此,只考虑将视图技术(至少对于动态部分)切换到某些通用的模板库,如Velocity或Freemarker.这带来了安全奖励,因为在这样的模板中,可以从JSP中删除的内容少于JSP中的内容.码.

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

然后你可以编写一个自定义视图解析器,它将使用用户选择的模板委托给相应的标准解析器(Velocity,Freemarker,XSLT,等等……).

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

本文标题为:java – 从数据库动态创建JSP模板(视图)

基础教程推荐