从自定义源加载JSP页面

从自定义源加载JSP页面,jsp,servlets,Jsp,Servlets,是否可以在web应用程序之外执行JSP页面并捕获其输出? 具体地说,在我的例子中仍然存在一个普通的web应用程序,但它不是从类路径加载JSP页面,而是从任意源加载JSP页面。似乎我不能简单地获取RequestDispatcher并将其指向磁盘上的JSP文件 如果我错了,请纠正我,但我想你的意思是你想捕获HTML。。。不是JSP。JSP在servlet引擎(Web应用服务器)上处理(转换为JAVA文件),HTML格式化后,通过Web服务器(与Web应用服务器不同)提供给请求者。您无法让Reques

是否可以在web应用程序之外执行JSP页面并捕获其输出?
具体地说,在我的例子中仍然存在一个普通的web应用程序,但它不是从类路径加载JSP页面,而是从任意源加载JSP页面。似乎我不能简单地获取RequestDispatcher并将其指向磁盘上的JSP文件

如果我错了,请纠正我,但我想你的意思是你想捕获HTML。。。不是JSP。JSP在servlet引擎(Web应用服务器)上处理(转换为JAVA文件),HTML格式化后,通过Web服务器(与Web应用服务器不同)提供给请求者。您无法让RequestDispatcher从磁盘直接处理JSP,因为web应用服务器尚未对其进行处理。 现在,捕获JSP(HTML)的输出应该是可能的,但我以前从未这样做过。可能有一些很灵巧的API,这些API比我所知道的要多,但HTTP通常是在端口80上完成的,所以我想人们可以在TCPIP套接字上读/写端口80。除此之外,可能还有更多的事情要做,但至少这是开始研究的一点

对不起,我不能提供更多的细节,但见鬼。。。在这一点上,这对我来说都是理论。

我认为你最好使用像velocity这样的模板引擎。这为动态内容提供了一个干净的基础结构,它显然不同于您所要求的jsp/servlet内容

也就是说,我见过一些应用程序将JSP复制到其部署的目录中,以便容器将其提取并转换。如果您这样做,请注意这限制了您未来的选择:

  • 您依赖于您的应用程序被“分解”——例如,它不能直接从WAR归档文件中运行(这可能会限制您的部署选项)
  • 如果不禁用Scriptlet(如果确实禁用了,但会有点困难),那么在运行时使JSP可编辑可能会打开安全漏洞。禁用scriptlets会禁止JSP中的真正Java代码,因此您只能使用标记库
  • 您将需要一个运行时可用的Java编译器,而您可能不希望在生产系统中使用它—例如,您不能在部署之前预编译JSP。在生产系统中,您还需要在运行时支付通常的jsp翻译代价
用于禁用脚本的web.xml配置:

<jsp-config>
    <jsp-property-group>
        <url-pattern>*.jsp</url-pattern>
        <scripting-invalid>true</scripting-invalid>
    </jsp-property-group>
</jsp-config>

*.jsp
真的
我希望这个web.xml代码片段通过了,预览没有正确显示它

更新:尝试使xml代码段正确显示