這裏是代碼(Servlet的getMethod),這將下載web.xml和拉鍊它。我認爲它會很容易爲您的目的進行轉換:只需刪除zip流。
主要的竅門是getRealPath。
public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
try {
final String docxzip = "zip";
// vzemi datoteko iz web xml
String webXMLFile = getServletContext().getRealPath("/WEB-INF/web.xml");
response.setContentType("application/zip");
response.setHeader("Content-Disposition","inline; filename=output.zip;");
ServletOutputStream outputStream = response.getOutputStream();
ZipOutputStream zip = new ZipOutputStream(outputStream);
zip.putNextEntry(new ZipEntry("web.xml"));
byte[] b = new byte[1024];
int len;
FileInputStream fis = new FileInputStream(webXMLFile);
while ((len = fis.read(b)) != -1) {
zip.write(b, 0, len);
}
//response.setHeader("Content-Length", (new Integer(len)).toString());
fis.close();
zip.flush();
zip.close();
outputStream.flush();
final PrintWriter out = response.getWriter();
out.print(docxzip);
out.flush();
return;
} catch (Exception ex) {
HttpUtils.noData(response, ex.toString());
return;
}
}
P.S.在WAR內部訪問文件可能會在某些Java服務器上被拒絕。
不打開戰爭是不可能的。但通常情況下,一旦部署你的戰爭已經爆炸在'webapps'文件夾(或類似的東西)。然後你應該找到你的形象。 – YMomb
我們使用Jboss作爲7.我沒有發現戰爭文件的任何爆炸文件夾結構。我注意到在tomcat中的東西,它會工作,你說 –
也許你可以按照[這裏] [1]的解釋首先爆炸你的戰爭。 [1]:http://stackoverflow.com/questions/487363/how-can-i-get-jboss-to-explode-a-deployed-war-file – YMomb