【发布时间】:2011-01-03 16:03:16
【问题描述】:
在 jsp/java 中,如何调用输出 xml 文件作为结果的页面并将其结果(xml 类型)保存到服务器上的 xml 文件中。两个文件(生成 xml 的文件和我们要保存/覆盖的文件)都位于同一服务器上。
基本上我想通过调用输出 xml 类型结果的 generate.jsp 来更新我的 test.xml。
谢谢。
【问题讨论】:
在 jsp/java 中,如何调用输出 xml 文件作为结果的页面并将其结果(xml 类型)保存到服务器上的 xml 文件中。两个文件(生成 xml 的文件和我们要保存/覆盖的文件)都位于同一服务器上。
基本上我想通过调用输出 xml 类型结果的 generate.jsp 来更新我的 test.xml。
谢谢。
【问题讨论】:
如果请求是幂等的,那么只需使用java.net.URL 来获取JSP 输出的InputStream。例如
InputStream input = new URL("http://example.com/context/page.jsp").openStream();
如果请求不是幂等的,那么您需要将响应的PrintWriter 替换为自定义实现,该实现将输出复制到某个缓冲区/构建器中。我之前在这里发布了一个代码示例:Capture generated dynamic content at server side
一旦有了输出,只需按照通常的java.io 方式将其写入磁盘,假设 JSP 已经是 XHTML 格式。
【讨论】:
HttpServletRequest 提供的方法动态构建它。
while 循环,在 try-catch-finally 块内有一个 byte[] 缓冲区,它将输入流读入缓冲区并将缓冲区写入输出流,直到到达输入流的末尾。
HttpServletResponse 对象,扩展原始 HttpServletResponse,并返回您自定义的 OutputStream 和 PrintWriter 而不是原始对象。OutputStream 和PrintWriter 调用原始OutputStream 和PrintWriter,但也写入您的文件(使用新的FileOutputStream)【讨论】:
你为什么不使用像 FreeMarker 这样的真正的模板引擎?那会更容易。
【讨论】: