可能性のある複製:
。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());
}
さまざまな方法でプロパティファイルにアクセスしようとしました。どうすれば修正できますか?
パッケージに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%>
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"))
これで、システムの構成をデプロイヤが個別に制御できます。
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" %>