我使用的是带有RichFaces的JSF 1.2。是否可以模仿web浏览器客户端的"另存为"?更确切地说,我想在页面上添加一个"下载zip"。其目的是生成一个zip存档,其中包含HTML生成的页面以及以正确布局打开该页面所需的所有文件。
我过去成功地通过HttpResponseWrapper
捕获了HTML页面。但是,一旦页面包含RichFaces组件,就需要一些JS和图像才能正确显示。我如何获得这些资源以将它们添加到zip中?
使用Jsoup这样的HTML解析器。它可以通过类似jQuery的CSS选择器轻松找到CSS/JS/image元素,并将资源URL返回给您,以便您可以单独下载它们。
InputStream input = new URL(url).openStream();
// ... Save webpage itself.
Document document = Jsoup.parse(savedWebPage, "UTF-8", url);
for (Element stylesheet : document.select("link[rel=stylesheet]")) {
InputStream input = new URL(stylesheet.absUrl("href")).openStream();
// ... Save individual stylesheet file.
}
for (Element script : document.select("script[src]")) {
InputStream input = new URL(script.absUrl("src")).openStream();
// ... Save individual script file.
}
for (Element img : document.select("img[src]")) {
InputStream input = new URL(img.absUrl("src")).openStream();
// ... Save individual image file.
}
不考虑CSS背景图像。您可以考虑在每个单独的CSS文件上使用类似SAC的CSS解析器。