我在WEB-INF目录中有一个Web应用程序和XML文件。我需要加载这个xml文件。是否有其他方式加载它而不是使用getServletContext().getResourceAsStream("/WEB-INF/test.xml");
我尝试了Thread.currentThread().getContextClassLoader().getResourceAsStream("/WEB-INF/test.xml");
它不起作用。
你能帮我吗?
答案 0 :(得分:1)
您可以使用应用程序中的WEB-INF
从/WEB-INF/test.xml
文件夹中访问资源(jsp-servlet)。
<!%@ taglib uri="/WEB-INF/tiles-jsp.tld" prefix="tiles" %>
如果要将其提供给Web用户,则无法直接访问它。对于用户直接访问它,必须有某种接口将从WEB-INF文件夹中公开文件(例如,jsp读取文件/WEB-INF/test.xml并将其输出到jsp / servlet) )
<强>更新强>
要使用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();
}
}
这将从WEB-INF
读取名为newfile.xml的文件,并将其内容输出到控制台。输出将类似于:
文件内容:
&LT; a&gt;
&LT; b> xxxx&lt; / b&gt;
&LT; / a&gt;