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 - サーブレット)内から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)。 )

アップデート

サーブレットを使用してファイルを読み取るには、次を使用します。

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 に答える