Methode 1: Verwenden Sie den ServletContext, um zu lesen
Holen Sie sich den Realpath der Konfigurationsdatei und lesen Sie sie dann über den Dateistrom oder verwenden Sie die Methode GetReaasurceStream ().
Da der Dateipfad mit dem servletContext gelesen wird, kann die Konfigurationsdatei im Verzeichnis des Web-INF oder in der Anwendungsebene und im Web-INF-Verzeichnis platziert werden. Die spezifische Leistung des Dateispeicherorts im Eclipse-Projekt ist: Sie kann unter SRC oder unter Web-Inf und Web-Root usw. platziert werden. Da der Pfad ausgelesen wird und der Dateistrom zum Lesen verwendet wird, können alle Konfigurationsdateien gelesen werden, einschließlich XML und Eigenschaften. Nachteile: Konfigurationsinformationen außerhalb des Servlets können nicht lesen.
1. Erstellen Sie zunächst ein dynamisches Javaweb -Projekt, das Projektverzeichnis lautet wie folgt:
2. Erstellen Sie ein Servlet (fileReader.java)
Paket com.xia.Filereader; import Java.io.FileInputStream; importieren java.io.ioException; importieren java.io.inputstream; importieren java.io.inputStreamReader; Java.Text.MessageFormat importieren; Import Java.util.Properties; importieren javax.servlet.servletException; import Javax.servlet.http.httpServlet; importieren javax.servlet.http.httpServletRequest; importieren javax.servlet.http.httpServletResponse; öffentliche Klasse fileReader erweitert httpServlet {private statische endgültige long serialversionuid = 1l; Protected void dodget (httpServletRequest-Anforderung, httpServletResponse-Antwort) löst ServletException aus, iOException { /*** response.setContentType ("text /html; charset = utf-8"); Ziel ist es, den Browser zu steuern, um UTF-8 zu dekodieren. * Auf diese Weise gibt es keine chinesischen verstümmelt*/ reaktion. ReadSrcDirPropcfgFile (Antwort); // Lesen Sie die Konfigurationsdateiantwort db1.properties.getWriter (). println ("<hr/>"); ReadWebrootDirPropcfgFile (Antwort); // Lesen Sie die DB2.Properties -Konfigurationsdatei Antwort.getWriter (). println ("<hr/>"); ReadWebrootDirPropcfgFile (Antwort); // Lesen Sie die DB2.Properties -Konfigurationsdatei Antwort.getWriter (). println ("<hr/>"); ReadSrcSourcePackPropcfgFile (Antwort); // Lesen Sie die Konfigurationsdatei db3.Properties im Konfigurationsverzeichnis unter der Reaktion von SRC -Verzeichnis. ReadWebInfPropCfGFile (Antwort); // Lesen Sie die Konfigurationsdatei db4.Properties im JDBC-Verzeichnis unter dem Web-inf-Verzeichnis} public void readSrcDirPropcfgFile (httpServletResponce) -ReadsRows IOExcepties {String pathabory = "/webinf/classes/db1.propties"; InputStream in = this.getServletContext (). GetResourceAsStream (Pfad); Eigenschaften props = neue Eigenschaften (); props.load (in); String driver = props.getProperty ("jdbc.driver"); String url = props.getProperty ("jdbc.url"); String username = props.getProperty ("jdbc.username"); String password = props.getProperty ("jdbc.password"); Antwort.getWriter (). println ("Lesen Sie die Konfigurationsdatei db1.Properties im SRC -Verzeichnis"); response.getWriter (). println (messageFormat.format ("treiber = {0}, url = {1}, username = {2}, passwart = {3}", Treiber, URL, Benutzername, Passwort)); } public void ReadWebrootDirPropcfgFile (httpServletResponse -Antwort) löst IOException aus {String path = "/db2.properties"; InputStream in = this.getServletContext (). GetResourceAsStream (Pfad); Eigenschaften props = neue Eigenschaften (); props.load (in); String driver = props.getProperty ("jdbc.driver"); String url = props.getProperty ("jdbc.url"); String username = props.getProperty ("jdbc.username"); String password = props.getProperty ("jdbc.password"); response.getWriter (). println ("Lesen Sie die Konfigurationsdatei db2.Properties im Webroot -Verzeichnis"); response.getWriter (). println (messageFormat.format ("treiber = {0}, url = {1}, username = {2}, passwart = {3}", Treiber, URL, Benutzername, Passwort)); } public void readSrcSourcePackPropcfgFile (httpServletResponse-Antwort) löst IOException aus {String path = "/web-inf/classes/config/db3.properties"; String realPath = this.getServletContext (). GetRealPath (Pfad); InputStreamReader Reader = New InputStreamReader (neuer FileInputStream (RealPath), "UTF-8"); Eigenschaften props = neue Eigenschaften (); props.load (reader); String driver = props.getProperty ("jdbc.driver"); String url = props.getProperty ("jdbc.url"); String username = props.getProperty ("jdbc.username"); String password = props.getProperty ("jdbc.password"); response.getWriter (). println ("Lesen Sie die Konfigurationsdatei db3.Properties im Konfigurationsverzeichnis im SRC -Verzeichnis"); response.getWriter (). println (messageFormat.format ("treiber = {0}, url = {1}, username = {2}, passwart = {3}", Treiber, URL, Benutzername, Passwort)); } public void ReadWebInfPropcfgFile (httpServletResponse-Antwort) löst IOException aus {String path = "/web-inf/jdbc/db4.properties"; String realPath = this.getServletContext (). GetRealPath (Pfad); System.out.println ("RealPath:"+RealPath); System.out.println ("contextPath:"+this.getServletContext (). GetContextPath ()); InputStreamReader Reader = New InputStreamReader (neuer FileInputStream (RealPath), "UTF-8"); Eigenschaften props = neue Eigenschaften (); props.load (reader); String driver = props.getProperty ("jdbc.driver"); String url = props.getProperty ("jdbc.url"); String username = props.getProperty ("jdbc.username"); String password = props.getProperty ("jdbc.password"); response.getWriter (). println ("Lesen Sie die Konfigurationsdatei db4.Properties im JDBC-Verzeichnis unter dem Web-inf-Verzeichnis"); response.getWriter (). println (messageFormat.format ("treiber = {0}, url = {1}, username = {2}, passwart = {3}", Treiber, URL, Benutzername, Passwort)); } Protected void dopost (httpServletRequest -Anforderung, httpServletResponse -Antwort) löst ServletException aus, IOException {}}3. Konfigurieren Sie Servlet (web.xml)
<? XSI: Schemalocation = "http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app-app-app-app-app- = <display-name>javaReaderFile</display-name> <welcome-file-list> <welcome-file>index.html</welcome-file> <welcome-file>index.htm</welcome-file> <welcome-file>index.jsp</welcome-file> <welcome-file>default.html</welcome-file> <welcome-file>default.htm</welcome-file> <Welcome-File> default.jsp </Welcome-File> </Welcome-File-List> <Servlet> <Servlet-Name> FileReader </Servlet-Name> <Servlet-Class> com.xia.filereader.filereader </Servlet-Class> </servlet> <Servlet-Mapping> <servlet-name> fileReader </servlet-name <URL-Muster>/FileReader </url-pattern> </servlet-mapping> </web-App>
4. Test
Methode 2: Verwenden Sie die Ressourcebundle -Klasse, um Konfigurationsinformationen zu lesen
Die Vorteile sind: Die Ressource kann in einen vollständig qualifizierten Klassennamen geladen und direkt gelesen werden, und die Ressourcendatei kann in Nicht-Web-Anwendungen gelesen werden.
Nachteile: Es können nur Ressourcendateien unter der Klasse SRC geladen werden und nur .Properties -Dateien können gelesen werden.
/** * Alle Daten in die angegebene Konfigurationsdatei abrufen * @param PropertyName * Aufrufmethode: * 1. Platzieren Sie die Konfigurationsdatei unter das Ressourcenquellenpaket, ohne das Suffix * PropertiesUtil.getAllMessage ("Meldung"); * 2. Platz in das Paket * Propertiesutil.getallMessage ("com.test.message"); * @return */ public static list <string> getAllMessage (String PropertyName) {// Erhalten Sie das Ressourcenpaket Resourcebundle rb = Resourcebundle.getBundle (PropertyName.trim ()); // Alle Schlüsselumzählungen <string> Allkey = rb.getkeys () erhalten; // den Schlüssel durchqueren und Wertliste erhalten <string> vallist = new ArrayList <string> (); while (allekey.hasmoreElements ()) {String key = Allkey.NextElement (); String value = (String) rb.getString (Schlüssel); vallist.add (Wert); } return vallist; }Methode 3: Verwenden Sie Classloader, um Konfigurationsinformationen zu lesen
Die Vorteile sind: Die Konfigurationsressourceninformationen können in Nicht-Web-Anwendungen gelesen werden, und alle Informationen zur Ressourcendatei können gelesen werden.
Nachteile: Es sind nur Ressourcendateien unter der Klasse SRC geladen und sind nicht zum Laden großer Dateien geeignet, andernfalls verursacht dies JVM -Speicherüberlauf
Paket com.xia.Filereader; Import Java.io.BufferedReader; importieren java.io.ioException; importieren java.io.inputstream; importieren java.io.inputStreamReader; Import Java.util.Properties; public class readByClassloader {public static void main (String [] args) löst ioException {readPropfileByClassLoad () aus; } public static void readPropfileByClassLoad () löst IOException aus {// Lesen Sie die Konfigurationsdatei DB3.Properties InputStream in = ReadByClassloader.class.getClassloader (). getResourceAsStream ("config/db3.Properties"); BufferedReader BR = neuer BufferedReader (neuer InputStreamReader (in)); Eigenschaften props = neue Eigenschaften (); props.load (BR); für (Objekt s: props.keyset ()) {System.out.println (s+":"+props.getProperty (S.ToString ()); }}}Methode 4: Propertiesloaderutils Tool Class
/ *** PropertiesloaderUtils von Spring bereitgestellt können Sie Eigenschaftsressourcen direkt über die Dateiadresse basierend auf dem Klassenpfad laden while (true) {try {props = propertiesloaderUtils.loadAllProperties ("message.Properties"); für (Objektschlüssel: props.keyset ()) {System.out.print (Key+":"); System.out.println (props.get (Schlüssel)); }} catch (ioException e) {System.out.println (e.getMessage ()); } try {thread.sleep (5000);} catch (InterruptedException e) {e.printstacktrace ();}}}Eigenschaften ändern
/** * Übergeben Sie die Karte des Schlüsselwertpaares, aktualisieren Sie die Eigenschaftendatei * * @param Dateiname * Dateiname (im Verzeichnis des Ressourcenquellenpakets) und erfordert das Suffix * @param keyvaluemap * Schlüsselkarton. codieren die Pfadinformationen. Wenn es Chinesen und Räume auf dem Weg gibt, wandelt es diese Zeichen um. Auf diese Weise ist das Ergebnis oft nicht der wahre Weg, den wir wollen. Hier wird die UrldeCoder Decodes -Methode aufgerufen, um sie zu dekodieren, um die ursprünglichen Chinesen- und Weltraumwege zu erhalten. String filepath = PropertiesUtil.class.getClassloader (). GetResource (Dateiname) .getFile (); Eigenschaften Requisiten = null; BufferedWriter bw = null; try {filepath = urdecoder.decode (filepath, "utf-8"); log.debug ("updateProperties PropertiesPath:" + filepath); props = propertiesloaderUtils.loadProperties (neuer classpathresource (Dateiname)); log.debug ("updateProperties PropertiesPath:" + filepath); props = propertiesloaderUtils.loadProperties (neuer classpathresource (Dateiname)); log.debug ("UpdateProperties alt:"+Requisiten); // Eigenschaftsdatei schreiben bw = neuer bufferedwriter (neuer outputStreamwriter (neuer FileOutputStream (Filepath)); props.clear (); // Die alte Datei für (String -Schlüssel: KeyValUemap.Keyset ()) props.setProperty (Schlüssel, KeyValUemap.get (Schlüssel)) löschen; log.debug ("updateProperties neu:"+props); Props.Store (BW, ""); } catch (ioException e) {log.Error (e.getMessage ()); } endlich {try {bw.close (); } catch (ioException e) {e.printstacktrace (); }}}Zusammenfassen
Die oben genannten sind die vier Methoden zum Lesen von Konfigurationsdateien von Javaweb, die der Editor Ihnen vorstellt. Ich hoffe, es wird Ihnen hilfreich sein. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und der Editor wird Ihnen rechtzeitig antworten. Vielen Dank für Ihre Unterstützung auf der Wulin.com -Website!