我在 WEB-INF 目录中有一个 Web 应用程序和 XML 文件。我需要加载这个 xml 文件。是否有其他方式加载它而不是使用getServletContext().getResourceAsStream("/WEB-INF/test.xml");
我尝试了类似的选项Thread.currentThread().getContextClassLoader().getResourceAsStream("/WEB-INF/test.xml");
它不工作。
请你帮助我好吗?
我在 WEB-INF 目录中有一个 Web 应用程序和 XML 文件。我需要加载这个 xml 文件。是否有其他方式加载它而不是使用getServletContext().getResourceAsStream("/WEB-INF/test.xml");
我尝试了类似的选项Thread.currentThread().getContextClassLoader().getResourceAsStream("/WEB-INF/test.xml");
它不工作。
请你帮助我好吗?
您可以在应用程序中使用(jsp - servlet)从WEB-INF
文件夹中访问资源。/WEB-INF/test.xml
<!%@ taglib uri="/WEB-INF/tiles-jsp.tld" prefix="tiles" %>
如果您想让它对 Web 用户可用,则不能直接访问它。为了让用户直接访问它,必须有某种接口可以从 WEB-INF 文件夹中公开文件(例如,读取文件 /WEB-INF/test.xml 并将其输出到 jsp/servlet 的 jsp )
更新
要使用 Servlet 读取文件,请使用以下命令:
protected void processRequest(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType("text/html;charset=UTF-8");
StringBuffer strContent = new StringBuffer("");
int ch;
PrintWriter out = response.getWriter();
try {
String path = getServletContext().getRealPath("/WEB-INF/newfile.xml");
File file = new File(path);
FileInputStream fin = null;
try {
fin = new FileInputStream(file);
while ((ch = fin.read()) != -1) {
strContent.append((char) ch);
}
fin.close();
} catch (FileNotFoundException e) {
System.out.println("File " + file.getAbsolutePath()
+ " could not found");
} catch (IOException ioe) {
System.out.println("Exception while reading the file" + ioe);
}
System.out.println("File contents :");
System.out.println(strContent);
} finally {
out.close();
}
}
这将从中读取一个名为 newfile.xml 的文件并将WEB-INF
其内容输出到控制台。输出将类似于:
文件内容:
<一个>
<b>xxxx</b>
</a>