0

Tomcat Webアプリからconfファイル(WEB-INFフォルダーにあります)にアクセスしようとしています。現在、ファイルの場所は。としてハードコードされていStringます。ただし、これは、tomcat/webappsフォルダーがハードコードされた場所とは異なる場所にある場合は機能しませんString。私はオンラインで調べましたが、このgetResourceAsStream ()方法を使用することが私が探しているもののようですが、それを機能させるのに苦労しています。getServletContext ()メソッドを呼び出すときに、アプリケーションがそれを気に入らない。誰か助けてもらえますか?

編集:関連するコードブロック

BufferedReader myReader = new BufferedReader (new InputStreamReader (getServletContext ().getResourceAsStream ("/WEB-INF/conf.txt")));
4

4 に答える 4

2

この問題を解決するために、WEB-INF(path / to / app / WEB-INF / classes / mypackage /)の下に2つのフォルダーを作成し、ファイルをこのフォルダーに配置しました。次に、POJOからthis.getClass.getResourceAsStream ("<filename>")、ストリームを開くように呼び出しました。私が行ったファイルの完全な絶対パス名である文字列を取得するためにthis.getClass.getResource ("<filename>").toString ().substring (5)

于 2012-08-27T17:15:27.543 に答える
1

TomcatのWEB-INFディレクトリからファイルをロードしようとしている場合は、次のコードを使用します。

たとえば、WEB-INF / config/config.xml内のファイルの場合

ServletContext context = ....//get servlet context
InputStream is = context.getResourceAsStream("/WEB-INF/config/config.xml");
于 2012-08-22T21:27:49.523 に答える
0

設定ファイルが/WEB-INF/config.xmlにある場合は、フルパスの代わりに「../config.xml」を使用してサーブレットからファイルにアクセスできます。これは、コンパイルされたアプリケーションクラスが通常/ WEB-INF/classes内にあるために機能します。

于 2012-08-22T22:04:29.770 に答える
0

次のコードは私のために働いた。私は自分のconfigファイルをWEB-INF/

web.xmlコードスニペット:

<servlet>
    <servlet-name>wizardcontroller</servlet-name>
    <servlet-class>com.sg.poc.wizard.controller.CustomerWizardController</servlet-class>
    <init-param>
        <param-name>plm-config</param-name>
        <param-value>plm-config.xml</param-value>
    </init-param>
</servlet>

サーブレットコードスニペット:

String configfile = config.getInitParameter("plm-config") ;
InputStream is = config.getServletContext().getResourceAsStream("/WEB-INF/"+configfile);
System.out.println("Resource Stream is : "+is);
于 2013-04-15T11:25:17.140 に答える