sjo*_*son 15 servlets relative-path realpath
我正在尝试生成一个XML文件并将其保存/WEB-INF/pages/.
下面是我使用相对路径的代码:
File folder = new File("src/main/webapp/WEB-INF/pages/");
StreamResult result = new StreamResult(new File(folder, fileName));
在本地计算机上作为应用程序运行时,它工作正常 (C:\Users\userName\Desktop\Source\MyProject\src\main\webapp\WEB-INF\pages\myFile.xml).
但是当在服务器机器上部署和运行时,它会引发以下异常:
javax.xml.transform.TransformerException:java.io.FileNotFoundException C:\ project\eclipse-jee-luna-R-win32-x86_64\eclipse\src\main\webapp\WEB INF\pages\myFile.xml
我也尝试getServletContext().getRealPath()了,但它正在null我的服务器上返回.有人可以帮忙吗?
Bal*_*usC 26
切勿在Java EE Web应用程序中使用相对本地磁盘文件系统路径,例如new File("filename.xml").有关深入解释,另请参阅getResourceAsStream()与FileInputStream.
切勿用于getRealPath()获取写入文件的位置.有关深入解释,请参阅servletcontext.getRealPath("/")的含义以及何时使用它.
永远不要将文件写入部署文件夹.有关深入说明,另请参阅在servlet应用程序中保存上载文件的建议方法.
始终将它们写入预定义绝对路径上的外部文件夹.
硬编码:
File folder = new File("/absolute/path/to/web/files");
File result = new File(folder, "filename.xml");
// ...
或者以多种方式之一配置:
File folder = new File(System.getProperty("xml.location"));
File result = new File(folder, "filename.xml");
// ...
或者使用容器管理的临时文件夹:
File folder = (File) getServletContext().getAttribute(ServletContext.TEMPDIR);
File result = new File(folder, "filename.xml");
// ...
或者使用OS管理的临时文件夹:
File result = File.createTempFile("filename-", ".xml");
// ...
另一种方法是使用(嵌入式)数据库.
| 归档时间: | 
 | 
| 查看次数: | 9940 次 | 
| 最近记录: |