是否可以执行JSP页面并在Web应用程序外部捕获其输出?
具体而言,在我的情况下,模式仍然存在一个普通的Web应用程序,但是它不是从其类路径而是从任意源加载JSP页面。似乎我不能简单地获取RequestDispatcher并将其指向磁盘上的JSP文件。
最佳答案
我认为您最好使用速度这样的模板引擎。这为动态内容提供了一个干净的基础结构,该基础结构明显不同于您要求的jsp / servlet。
就是说,我已经看到了将jsps复制到其部署目录中的应用程序,以便容器将其拾取并转换。如果您这样做,请注意,这限制了您将来的选择:
您依靠自己的应用程序“爆炸”-例如它不能直接用在WAR存档中(这可能会限制您的部署选项)
如果您不禁用脚本(也可以禁用脚本,则在运行时将jsps设置为可编辑状态)可能会打开安全漏洞(但是确实会更困难...)。禁用scriptlet会禁止jsps中包含真实的Java代码,因此,您仅限于标记库。
您需要在运行时可用的Java编译器,而您可能不希望在生产系统中使用它-例如您不能在部署之前预编译jsps。此外,您还需要在生产系统中的运行时支付通常的jsp-translation-penalty。
用于禁用脚本的web.xml配置:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
</jsp-config>
我希望这个web.xml代码段能够通过,预览未正确显示...
更新:试图使xml代码片段正确显示。