dou*_*lep 10 java webserver weblogic
实际情况是这样的:Java Web服务器(Weblogic)接收来自用户的请求,它必须发送ZIP存档作为响应.存档必须从用户要求的一些文件和服务器本身生成的一个HTML报告动态生成.我想重用服务器已经在其他情况下使用的JSF servlet来生成此报告.所以,基本上,我使用的是:
HttpURLConnection self = new URL ("http://me.myself.com/report.jsf?...").openConnection ();
String report_html = fetchHtmlFromConnection (self);
Run Code Online (Sandbox Code Playgroud)
然后创建所请求的ZIP,包括生成的HTML.
问题是,我可以以某种方式避免report.jsf在这种情况下发出内部HTTP请求(to )吗?这涉及到基本上没有意义(因为应用程序只是"自言自语")通过操作系统往返,HTTPD(可能在不同的机器上),等等.
我对 JSF 不是很熟悉,但根据我对它们的了解,您可以使用也适用于 JSP 页面的技术:
HttpServletResponseWrapper(容器使用的类,可让您修改响应)Writer(将呈现的页面写入输出)并提供一个将输出写入String将提供压缩代码的临时文件。有一个很好且简单的教程向您展示如何做到这一点: http://blog.valotas.com/2011/09/get-output-of-jsp-or-servlet-response.html
然后
ServletRequestDispatcher从您的 servlet 中获取一个可以让您调用 JSF 渲染的HttpServletResponseWrapperHttpServletResponseWrapper来获取渲染的 HTML 并将其提供给压缩代码。所以压缩 Servlet 会是这样的:
TempFileRespWrapper respWrapper = new TempFileRespWrapper();
RequestDispatcher dispatcher = getServletContext().getRequestDispatcher( "/report.jsf");
dispatcher.forward(request, respWrapper);
File f = respWrapper.getOutputPath();
addFileToZip(f);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1263 次 |
| 最近记录: |