Каков надлежащий способ обработать конфигурации (вход в систему базы данных и пароли, и т.д.) в динамическом веб-проекте?

Я просто достал выполнение динамического веб-программирования с помощью JSP. Что надлежащий путь состоит в том, чтобы обработать конфигурации?

Например, имя базы данных, хост, вход в систему, и пароль и каталог индексации в сервере, и т.д. Мое беспокойство главным образом о безопасности паролей. В настоящее время я трудно кодирую данные в .java файлы, я не думаю, что это - правильный способ сделать так, я хотел бы учиться на Вашем опыте.

6
задан Peter Mortensen 17 July 2010 в 18:58
поделиться

1 ответ

Конфигурация обычно хранится в файле свойств или XML, который помещается в путь к классам времени выполнения приложения или в фиксированном месте, которое указывается в качестве аргумента виртуальной машины. Доступ к файлу свойств можно получить с помощью java.util.Properties API. XML-файл можно анализировать с помощью JAXP или JAXB.

Вот пример такого файла свойств:

jdbc.url = jdbc:mysql://localhost:3306/javabase
jdbc.driver = com.mysql.jdbc.Driver
jdbc.username = java
jdbc.password = d$7hF_r!9Y

Предполагается, что он назван config.properties и помещен в корень пути к классам (или его корневой путь добавлен в путь к классам) , вот как вы можете загрузить его из пути к классам:

Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties"));
String url = properties.getProperty("jdbc.url");
String driver = properties.getProperty("jdbc.driver");
String username = properties.getProperty("jdbc.username");
String password = properties.getProperty("jdbc.password");
// ...

Вот пример XML-файла:

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <jdbc>
        <url>jdbc:mysql://localhost:3306/javabase</url>
        <driver>com.mysql.jdbc.Driver</driver>
        <username>java</username>
        <password>d$7hF_r!9Y</password>
    </jdbc>
</config>

Предполагая, что он называется config.xml и помещен в корень пути к классам, вот пример того, как вы можете загрузить его с помощью JAXP:

InputStream input = Thread.currentThread().getContextClassLoader().getResourceAsStream("config.xml");
Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse(new InputSource(input));
XPath xpath = XPathFactory.newInstance().newXPath();
String url = (String) xpath.compile("//config//jdbc//url").evaluate(document, XPathConstants.STRING);
String driver = (String) xpath.compile("//config//jdbc//driver").evaluate(document, XPathConstants.STRING);
String username = (String) xpath.compile("//config//jdbc//username").evaluate(document, XPathConstants.STRING);
String password = (String) xpath.compile("//config//jdbc//password").evaluate(document, XPathConstants.STRING);
// ...

Он только немного более подробный, хотя JAXB может облегчить жизнь, если это довольно сложный файл.

Защита доступа к свойствам или файлам XML, в свою очередь, должна контролироваться на более высоком уровне (ОС / платформа).

См. Также:

9
ответ дан 10 December 2019 в 02:42
поделиться
Другие вопросы по тегам:

Похожие вопросы: