web-dev-qa-db-ja.com

jspでプロパティファイルを使用する方法

可能性のある複製:
。propertiesファイルをjspにロードする方法

JSPでプロパティファイルを使用しようとしていますが、正しく機能せず、エラーがスローされます

Error: myproperties.properties (The system cannot find the file specified)

ここで、プロパティファイルにアクセスしようとしています。

<%
try
{
    FileInputStream fis = new FileInputStream("myproperties.properties");

    Properties p = new Properties();
    p.load(fis);
    String LogFileName = p.getProperty("NameOfLogFile");
    out.println(LogFileName);

}
catch (Exception e)
{// Catch exception if any
    out.println(e.getMessage());
}

さまざまな方法でプロパティファイルにアクセスしようとしました。どうすれば修正できますか?

19
KhAn SaAb

パッケージにtest.propertiesファイルを作成します

pname=xyz
psurname=abc

jspファイルを作成します。

<%@ page language="Java" import="Java.util.*" %> 
<%@ page import = "Java.util.ResourceBundle" %>
<% ResourceBundle resource = ResourceBundle.getBundle("test");
  String name=resource.getString("pname");
  String surname=resource.getString("psurname"); %>
  <%=name %>
 <%=surname%>
33
user1697238

JSPはサーブレットコンテナで実行されるため、現在の作業ディレクトリはコンテナによって定義されます。通常、コンテナがインストールされているディレクトリまたはそのbinディレクトリです。いずれにしても、カスタムプロパティファイルを保存する場所ではありません。

必要なことを行うには、2つの典型的なアプローチがあります。

最初のアプローチは、ファイルがアプリケーションの一部であり、展開時に変更しない場合に適しています。この場合、リソースからそれを読んでください:

props.load(getClass().getResourceAsStream())

またはさらに良い

props.load(Thread.currentThread().getContextClassLoader().getResourceAsStream())

2番目のアプローチは、展開環境でプロパティファイルを変更する場合に適しています。この場合、コンテナ外のファイルシステムのどこかに配置します。たとえば、Linux上の_/opt/mycompany/conf/myproperties.properties_または他の任意の場所。これで、FileInputStreamを作成するときに絶対パスを使用する必要があります。

システムの構成を改善するには、コード内に構成ファイルへのパスを記述しないでください。より良いアプローチは、システムプロパティを使用してアプリケーションに渡すことです。アプリケーションサーバーを実行しているときに、_-Dmycompany.conf=/opt/mycompany/myprops.properties_のようなパラメーターを追加します。ファイルを読み取りたい場合は、次の手順を実行します。

new FileInputStream(System.getProperties("mycompany.conf"))

これで、システムの構成をデプロイヤが個別に制御できます。

5
AlexR

FileInputStream fis = new FileInputStream("myproperties.properties");FileInputStream fis = new FileInputStream(new File("myproperties.properties"));に変更してみてください

また、使用しているクラスがjspファイルに既にインポートされていることを確認してください。すなわち、

<%@ page import="Java.io.FileInputStream" %>
<%@ page import="Java.io.File" %>
0