服务存储在DB中的JSP

use*_*695 6 resources jsp spring-mvc

我想将一个JSP页面作为blob存储在数据库中.因此,如果请求来自网址http://mydomain.com/app/list.jsp,我知道要转到数据库以检索资源list.jsp.

我正在使用弹簧和瓷砖,所以adispatcher servlet和控制器设置和传统意义上的工作.这原则上类似于资源servlet,Spring网站必须提供来自jar内的javascript文件和消息吗?

请注意,JSP不仅仅是静态HTML,我将拥有与页面关联的bean(模型属性),因此仍然希望使用EL来查询bean.

干杯

Mr.*_* 安宇 3

JSP的加载和编译是在servlet容器中实现的。我可以考虑使用两种方法来实现此功能:

  1. 修改 servlet 容器的 JSP servlet。如果您使用开源的 Jetty 或 Tomcat,您可以轻松查看它们的 JSP servlet 并对其进行更改,以便从数据库读取 JSP。您可以调整其中之一以在专有容器中使用。这是解决问题的最直接方法,但您正步入潜在错误的雷区。
  2. 按计划在数据库中构建 CMS,但在应用程序运行时将 JSP 复制到正在运行的应用程序的文件系统。让应用程序服务器的正常 JSP 更改检测注意到更改正在发生。您可以使用过滤器包装所有请求,该过滤器检查数据库中是否有更新的 JSP、在修改时复制 JSP,或使用计划作业以特定时间间隔复制它们。

在这两种情况下,您都必须担心卸载类的内存泄漏,特别是如果您的任何代码使用 ThreadLocals 或其他静态变量。如果您在运行时卸载 WAR 或重新编译 JSP,普通的 JSP 加载器就会遇到问题。这是由于Java的限制,不容易解决(取决于使用哪个JDK)。我建议永远不要或很少在不重新启动服务器的情况下更改 JSP,除非无法避免。