-1

Web アプリにメール送信機能を追加しています。SMTP サーバーの設定はjava.util.Propertiesファイルから読み込まれます。このファイルへのパスをハードコーディングしたくありません。

このファイルはどこに保管すればよいですか?

このファイルにアクセスするにはどうすればよいですか?

4

5 に答える 5

3

WEB-INF/classes/従うべき良いパターンは、ディレクトリの下に静的リソース (プロパティ ファイルなど) を保持することです。

classpathそうすれば、ブラウザからアクセスせずにから読み取ることができます。

たとえば、設定ファイルを の下に置きWEB-INF/classes/mail-settings.properties、次を使用して読み取ります。

InputStream is = MyClass.class.getResourceAsStream("mail-settings.properties");
Properties p = new Properties();
p.load(is);
is.close();
于 2012-09-27T08:37:38.610 に答える
0

ここに解決策があります:

EmailSettings.propertiesファイルをに配置しましWebContent\WEB-INF\classesた。このコードは動作するようになりました:

InputStream inputFile = this.getClass().getClassLoader().getResourceAsStream("EmailSettings.properties");

Properties emailConfig = new Properties();

emailConfig.load( inputFile );
.
.
.
于 2012-09-27T09:22:16.887 に答える
0

コードと一緒に保持したい場合は、Properties インスタンスをプログラムで作成することもできます。

    Properties mailProperties = new Properties();
    mailProperties.setProperty("mail.transport.protocol", "smtp");
    mailProperties.setProperty("mail.smtp.host", "localhost");
    mailProperties.setProperty("mail.smtp.port", "587");
    mailProperties.setProperty("mail.smtp.auth", "false");

    javax.mail.Session.getInstance(mailProperties);

とにかくプロパティファイルに入れたい場合は、クラスパスリソースとしてロードできます。java.lang.Class の getResourceAsStream を見てください。更新: これを行う方法については、エポックの回答を参照してください!

于 2012-09-27T08:38:24.687 に答える
-1

設定がステージに依存する場合は、vm 環境変数を介してファイルへのパスを設定できます。

-DmyPropertyFilePath=....

また、 Java Worldにはプロパティ ファイルのロードに関する優れた記事があります (少し古いですが)。

于 2012-09-27T08:30:59.917 に答える