Метод 1: Используйте ServletContext для чтения
Получите REALPATH файла конфигурации, а затем прочитайте его через поток файла или используйте метод getReaAsurCeasStream ().
Поскольку путь файла читается с использованием ServletContext, файл конфигурации может быть размещен в каталоге классов Web-Inf, или в уровне приложения и в каталоге Web-Inf. Конкретная производительность местоположения хранилища файлов в проекте Eclipse состоит в том, что он может быть размещен в SRC, или под Web-Inf и Web-root и т. Д. Поскольку путь вычитается, а поток файлов используется для чтения, можно прочитать любые файлы конфигурации, включая XML и свойства. Недостатки: не может прочитать информацию о конфигурации за пределами сервлета.
1. Сначала создайте динамический проект Javaweb, каталог проекта выглядит следующим образом:
2. Создайте сервлет (FileReader.java)
пакет com.xia.filereader; импортировать java.io.fileinputstream; импортировать java.io.ioexception; импортировать java.io.inputstream; Импорт java.io.inputStreamReader; импортировать java.text.messageformat; импортировать java.util.properties; Импорт javax.servlet.servletexception; Импорт javax.servlet.http.httpservlet; Импорт javax.servlet.http.httpservletrequest; Импорт javax.servlet.http.httpservletresponse; Общедоступный класс FileReader расширяет httpservlet {Private Static Long Long SerialVersionUID = 1L; Защищенная void Doget (httpservletrequest, httpservletresponse response) Throws servletexception, ioexception { /*** response.setContentType ("text /html; charset = utf-8"); Цель состоит в том, чтобы управлять браузером, чтобы декодировать UTF-8; ! readsrcdirpropcfgfile (response); // Читать DB1.properties Configuration File response.getWriter (). println ("<hr/>"); readwebrootdirpropcfgfile (response); // Читать DB2.Properties Configuration Recason.getWriter (). Println ("<hr/>"); readwebrootdirpropcfgfile (response); // Читать DB2.Properties Configuration Recason.getWriter (). Println ("<hr/>"); readsrcsourcepackpropcfgfile (response); // Читать файл конфигурации DB3. readwebinfpropcfgfile (response); // Читать файл конфигурации DB4. InputStream in = this.getServletContext (). GetResourCeasStream (path); Свойства реквизит = новые свойства (); 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 («Прочитайте файл конфигурации DB1. response.getWriter (). } public void readWebRootdirPropcfgfile (httpservletresponse response) бросает ioexception {string path = "/db2.properties"; InputStream in = this.getServletContext (). GetResourCeasStream (path); Свойства реквизит = новые свойства (); 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 («Прочитайте файл конфигурации DB2. response.getWriter (). } public void redateRcsourcepackpropcfgfile (httpservletresponse response) throws ioexception {string path = "/web-inf/classes/config/db3.properties"; String realPath = this.getServletContext (). GetRealPath (path); InputStreamReader Reader = new InputStreamReader (new FileInputStream (realPath), "UTF-8"); Свойства реквизит = новые свойства (); props.load (читатель); 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 («Прочитайте файл конфигурации DB3.Properties в каталоге конфигурации в каталоге SRC»); response.getWriter (). } public void readWebinfPropcfgfile (httpservletresponse response) бросает ioexception {String path = "/web-inf/jdbc/db4.properties"; String realPath = this.getServletContext (). GetRealPath (path); System.out.println ("RealPath:"+RealPath); System.out.println ("contextPath:"+this.getServletContext (). GetContextPath ()); InputStreamReader Reader = new InputStreamReader (new FileInputStream (realPath), "UTF-8"); Свойства реквизит = новые свойства (); props.load (читатель); 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 («Прочитайте файл конфигурации DB4. response.getWriter (). } Защищенный void Dopost (httpservletrequest, httpservletresponse response) throws servletexception, ioexception {}}3. Настроить сервис (web.xml)
<? xml version = "1.0" Encoding = "utf-8"?> <web-app xmlns: xsi = "http://www.w3.org/2001/xmlschema-instance" xmlns = "http://java.sun.com/xml/ns/javaee" 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_3_0.xsd" = "webapp" = "webapp" = "webapp_dapp_3_0.0. <SIVEL-name> javareaderfile </display-name> <selcopport-file-list> <selcopport> index.html </wervelode-file> <selcown-file> index.htm </wervedied-file> <selcopport-file> index.jsp </wervelode-file> <welcessfile> default.html </werveding> <dwalldfile file> delable-file> wallow-file> default. <werveload> default.jsp </wervedied-file> </werveding-file-list> <servlet> <servlet-name> filereader </servlet-name> <servlet-class> com.xia.filereader.filereader </servlet-name> </servlet> <serplet> <servlet-name> falereader </servlet> </servlet> <servlet> <servlet-name> for <Url-pattern>/fileReader </url-pattern> </servlet-mapping> </web-app>
4. Тест
Метод 2: Используйте класс ResourceBundle для чтения информации о конфигурации
Преимущества: ресурс может быть загружен в полностью квалифицированное имя класса и прямо его, а файл ресурса можно прочитать в приложениях без WEB.
Недостатки: можно загрузить только файлы ресурсов в рамках класса SRC, и можно прочитать только файлы .properties.
/** * Получить все данные в указанном файле конфигурации * @param PropertiveName * Метод вызова: * 1. Разместите файл конфигурации в пакет источника ресурса без добавления суффикса * PropertiesUtil.getAllMessage ("Message"); * 2. Поместите в пакет * PropertiesUtil.getAllMessage ("com.test.message"); * @return */ public Static List <string> getAllMessage (String PropertyName) {// Получить ресурс Package ResourceBundle RB = ResourceBundle.getBundle (propertyName.trim ()); // Получить все перечисление клавиш <String> allKey = rb.getKeys (); // пройти ключ и получить список значений <string> vallist = new ArrayList <string> (); while (allKey.hasmoreElements ()) {String key = allKey.NextElement (); String value = (string) rb.getString (key); vallist.add (значение); } вернуть валлиста; }Метод 3: Используйте ClassLoader для чтения информации о конфигурации
Преимущества: информация о ресурсе конфигурации может быть прочитана в приложениях без WEB, и любая информация о файле ресурсов может быть прочитана.
Недостатки: загружаются только файлы ресурсов под классом SRC и не подходят для загрузки больших файлов, в противном случае это вызовет переполнение памяти JVM
пакет com.xia.filereader; Импорт java.io.bufferedReader; импортировать java.io.ioexception; импортировать java.io.inputstream; Импорт java.io.inputStreamReader; импортировать java.util.properties; открытый класс readbyclassloader {public static void main (string [] args) выбрасывает ioException {readPropFileByClassload (); } public static void readPropFileByClassLoad () Throws IOException {// Читать файл конфигурации db3.properties inputstream in = readbyclassloader.class.getClassloader (). getResourCeasStream ("config/db3.properties"); BufferedReader BR = новый BufferedReader (New InputStreamReader (IN)); Свойства реквизит = новые свойства (); props.load (br); for (Object S: props.keyset ()) {System.out.println (s+":"+props.getproperty (s.tostring ())); }}}Метод 4: PropertiesLoadErutils Class
/ *** Propertiesloaderutils, предоставляемые Spring, позволяет загружать ресурсы свойств непосредственно через адрес файла на основе ClassPath* Самое большое преимущество: загрузите файл конфигурации в режиме реального времени, и он вступает в силу сразу после изменения, без перезапуска*/ private void void presscutil () {Properties props = новые свойства (); while (true) {try {props = propertieserutils.loadallproperties ("message.properties"); for (объект ключа: props.keyset ()) {system.out.print (key+":"); System.out.println (props.get (key)); }} catch (ioException e) {System.out.println (e.getMessage ()); } try {thread.sleep (5000);} catch (прерывание Exception e) {e.printstackTrace ();}}}Изменить свойства
/** * Передайте карту пары клавиш-значения, обновите файл свойств * * @param filename * Имя файла (размещен в каталоге пакета источника ресурса) и требует суффикса * @param keyvaluemap * map-value pare */public static voidproperties (String filename, map <string> keyvaluemap). информация. Когда на пути появятся китайцы и места, он преобразует эти персонажи. Таким образом, результат часто не является реальным путем, который мы хотим. Здесь метод декодирования UrldeCoder вызывается для декодирования его для получения исходных китайских и космических путей. String filePath = PropertiesUtil.class.getClassLoader (). GetResource (имя файла) .getFile (); Свойства реквизит = null; BufferedWriter BW = NULL; try {filepath = urldecoder.decode (filePath, "UTF-8"); log.debug ("UpdateProperties PropertiesPath:" + filePath); Reps = PropertiesLoaderutils.loadProperties (новый ClassPathresource (имя файла)); log.debug ("UpdateProperties PropertiesPath:" + filePath); Reps = PropertiesLoaderutils.loadProperties (новый ClassPathresource (имя файла)); log.debug ("UpdateProperties old:"+ops); // Написать файл свойства BW = новый BufferedWriter (новый outputStreamWriter (новый файл palieOutputStream (filePath))); props.clear (); // очистить старый файл для (String Key: keyvaluemap.keyset ()) props.setProperty (ключ, keyvaluemap.get (key)); log.debug ("UpdateProperties new:"+ops); props.store (bw, ""); } catch (ioException e) {log.error (e.getMessage ()); } наконец {try {bw.close (); } catch (ioException e) {e.printstackTrace (); }}}Суммировать
Выше приведено четыре метода чтения файлов конфигурации Javaweb, которые редактор представляет вам. Я надеюсь, что это будет полезно для вас. Если у вас есть какие -либо вопросы, пожалуйста, оставьте мне сообщение, и редактор ответит вам вовремя. Большое спасибо за вашу поддержку сайту wulin.com!