0

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

我尝试了类似的选项Thread.currentThread().getContextClassLoader().getResourceAsStream("/WEB-INF/test.xml");

它不工作。

请你帮助我好吗?

4

1 回答 1

1

您可以在应用程序中使用(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>

于 2012-09-17T20:25:38.643 回答