您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

在动态Web项目中处理配置(数据库登录名和密码等)的正确方法是什么?

在动态Web项目中处理配置(数据库登录名和密码等)的正确方法是什么?

配置通常存储在属性或XML文件中,该属性或XML文件放置在应用程序的运行时类路径中或在指定为VM参数的固定位置。可以使用java.util.PropertiesAPI 访问属性文件。可以使用JAXP或JAXB解析XML文件

这是此类属性文件的示例:

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文件的访问的安全性应在更高的级别(OS /平台)上进行控制。

其他 2022/1/1 18:16:53 有449人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶