【发布时间】:2008-10-12 12:36:50
【问题描述】:
是否可以在 Web 应用程序之外执行 JSP 页面并捕获其输出? 具体来说,在我的情况下,仍然存在一个普通的 Web 应用程序,但它不是从其类路径加载 JSP 页面,而是从任意源加载。似乎我不能简单地获取 RequestDispatcher 并将其指向磁盘上的 JSP 文件。
【问题讨论】:
是否可以在 Web 应用程序之外执行 JSP 页面并捕获其输出? 具体来说,在我的情况下,仍然存在一个普通的 Web 应用程序,但它不是从其类路径加载 JSP 页面,而是从任意源加载。似乎我不能简单地获取 RequestDispatcher 并将其指向磁盘上的 JSP 文件。
【问题讨论】:
我认为你最好使用像速度这样的模板引擎。这为动态内容提供了一个干净的基础架构,这明显不同于您所要求的 jsp/servlet 内容。
也就是说,我已经看到应用程序将 jsps 复制到其部署的目录中,以便容器获取并翻译它们。如果您这样做,请注意这会限制您未来的选择:
用于禁用脚本的 web.xml 配置:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<scripting-invalid>true</scripting-invalid>
</jsp-property-group>
</jsp-config>
我希望这个 web.xml sn-p 能通过,预览没有正确显示...
更新:尝试让 xml-sn-p 正确显示。
【讨论】:
如果我错了,请纠正我,但我认为您的意思是要捕获 HTML……而不是 JSP。 JSP 在 servlet 引擎(Web 应用服务器)上处理(到 JAVA 文件),在 HTML 被格式化并通过 Web 服务器(与 Web APP 服务器不同)提供给请求者之后。您无法让 RequestDispatcher 从磁盘直接处理 JSP,因为它尚未被 Web 应用服务器处理。
现在,应该可以捕获 JSP 的输出(在 HTML 中),但我以前从未这样做过。可能有一些精巧的 API 比我能解决的知识更丰富,但 HTTP 通常在端口 80 上完成,所以我猜一个人可以读/写 TCPIP 套接字上的端口 80。在此之上可能还有一些事情要做,但至少这是开始研究的一些点。
抱歉,我无法提供更多细节,但见鬼……这对我来说都是理论。
【讨论】: