Ich verwende Servlets, in denen ich die Datenbankverbindungsdetails hartcodiere, also muss ich den Code neu kompilieren. Stattdessen möchte ich stattdessen eine Datei .properties
verwenden (die ich später ändern kann) und diese als Quelle für meine Datenbankverbindung verwenden.
Das Problem ist, ich weiß nicht, wie ich die Eigenschaftendatei lesen soll. Könnte mir bitte jemand helfen, die Datei zu lesen?
Beispiel kommt von hier Properties
(Java)
Die Methoden von Properties
können Ausnahmen auslösen.
- Wenn der Dateipfad nicht gültig ist ( FileNotFoundException
). Versuchen Sie, ein File
-Objekt zu erstellen und prüfen Sie, ob das File
existiert.
- ...
Sie können sich die Konfiguration von Apache Commons ansehen. Mit ihr können Sie die Eigenschaftendatei wie folgt lesen:
%Vor%Diese Informationen zum Speicherort der Datei können ebenfalls wichtig sein:
Wenn Sie kein absolut angeben Pfad wird die Datei durchsucht automatisch im folgenden Orte:
- im aktuellen Verzeichnis
- im Home-Verzeichnis des Benutzers
- im Klassenpfad
Wenn Sie also die Eigenschaftendatei in einem Servlet lesen, sollten Sie die Eigenschaftendatei in einen Klassenpfad einfügen (z. B. in WEB-INF/classes
).
Sie finden weitere Beispiele auf ihrer Website.
Das größte Problem beim Lesen einer Eigenschaftendatei in einer Webanwendung ist, dass Sie den tatsächlichen Pfad der Datei nicht kennen. Also müssen wir den relativen Pfad verwenden und dafür müssen wir verschiedene Funktionen und Klassen wie getresourceAsStream (), InputStream, FileinputStream etc. Verwenden.
Und die Methode getReourceAsStream verhält sich in statischen und nicht statischen Methoden anders. Sie können dies auf folgende Weise tun:
Nicht statisch
InputStream input = getClass().getClassLoader().getResourceAsStream("config.properties");
Statisch
InputStream input = ReadPropertyFile.class.getClassLoader().getResourceAsStream("config.properties");
Für eine vollständige Referenz können Sie diesen Links folgen.
Der folgende Code fügt einen Listener hinzu, der nach Dateien sucht, die mit der Systemeigenschaft dbprops konfiguriert sind. Für jedes gegebene Intervall wird es aussehen, wenn die Datei geändert wird, wenn sie geändert wird, wird sie die Eigenschaften aus der Datei laden. Paket com.servlets;
%Vor%Angenommen, die Datei mybundle.properties befindet sich im Klassenpfad
Wenn Ihre Anwendung klein genug ist und nur eine Handvoll Eigenschaften aus nur ein oder zwei Property-Dateien stammt, würde ich vorschlagen, die JDK-eigene Properties-Klasse zu verwenden, die die Eigenschaften aus einer Datei lädt und genauso verwendet wie Sie Verwenden Sie eine Hashtabelle. Die Eigenschaftenklasse selbst erbt von Hashtable. Aber, Ihre Anwendung ist sehr groß mit einer beträchtlichen Anzahl von Eigenschaften aus verschiedenen Quellen wie Property-Dateien, XML-Dateien, Systemeigenschaften, dann würde ich vorschlagen, Apache Commons-Konfiguration zu verwenden. Es bietet eine einheitliche Ansicht von Eigenschaften aus verschiedenen Konfigurationsquellen und ermöglicht Ihnen, einen Überschreibungs- und Präferenzmechanismus für allgemeine Eigenschaften zu definieren, die in verschiedenen Quellen vorkommen. In diesem Artikel Ссылка finden Sie ein kurzes Tutorial zur Verwendung der Commons-Konfiguration.
Das ist eine gute Idee, um die Datenbankwerte aus der Eigenschaftendatei
zu lesenSie können eine Klasse Eigenschaften aus dem Util-Paket verwenden. Es ist wichtig zu beachten, dass der Stream nach dem Lesen der Datei oder dem Schreiben der Datei auf die Festplatte geschlossen wird. Sonst verursacht es Probleme. Hier ist ein Beispiel für Ihre Referenz:
%Vor%Ausgabe
%Vor%