String realPath = this.getServletContext().getRealPath(""); System.out.println(" realPath:"+realPath); String realPath2 = this.getServletContext().getRealPath("/"); System.out.println(" realPath2:"+realPath2); realPath2 = this.getServletContext().getRealPath("\\"); System.out.println(" realPath2:"+realPath2); String realPath4 = this.getServletContext().getRealPath("/aaa/bbb"); System.out.println("realPath4:"+realPath4); // this.getServletContext().getResourcePaths(arg0) // this.getServletContext().getResourceAsStream(arg0) // this.getServletContext().getResource(arg0) String realPath3 = this.getClass().getClassLoader().getResource("").getPath(); System.out.println("realPath3=" + realPath3); realPath3 = this.getClass().getClassLoader().getResource("rebel.xml").getPath(); System.out.println("realPath3=" + realPath3); // this.getClass().getClassLoader().getResourceAsStream(name) // this.getClass().getClassLoader().getResources(name)輸出:
JasperRunManager.runReportToPdfStream(getServletContext().getResourceAsStream("/report11.jasper"), sos, parameters);
這句時,開始寫成 java
FileInputStream fis = new FileInputStream(getServletContext().getRealPath("/report11.jasper")); JasperRunManager.runReportToPdfStream(fis, sos, parameters); fis.close();
而後想起ServletContext的getResourceAsStream,改爲: app
JasperRunManager.runReportToPdfStream(getServletContext().getResourceAsStream(getServletContext().getRealPath("/report11.jasper")), sos, parameters);
報錯,由於getResourceAsStream是相對於上下文路徑而言,不適用於絕對路徑,最後: 字體
JasperRunManager.runReportToPdfStream(getServletContext().getResourceAsStream("/report11.jasper"), sos, parameters);