在WEB-INF文件夹下加载资源

时间:2012-09-17 19:56:45

标签: java-ee servlets

我在WEB-INF目录中有一个Web应用程序和XML文件。我需要加载这个xml文件。是否有其他方式加载它而不是使用getServletContext().getResourceAsStream("/WEB-INF/test.xml");

我尝试了Thread.currentThread().getContextClassLoader().getResourceAsStream("/WEB-INF/test.xml");

等选项

它不起作用。

你能帮我吗?

1 个答案:

答案 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;