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

2024-05-04

我刚刚开始使用 JSP 进行动态 Web 编程。处理配置的正确方法是什么?

例如,数据库名称、主机、登录名和密码以及服务器中的索引目录等。我最关心的是密码的安全性。目前我将数据硬编码到 .java 文件中,我认为这不是正确的方法,所以我想从您的经验中学习。


配置通常存储在属性或 XML 文件中,该文件放置在应用程序的运行时类路径中或指定为 VM 参数的固定位置。可以使用以下方式访问属性文件java.util.Properties http://java.sun.com/javase/6/docs/api/java/util/Properties.htmlAPI。可以使用 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 https://stackoverflow.com/questions/5663581/parsing-a-simple-xml-document-with-jaxpjee6/5663786#5663786如果它是一个相当复杂的文件,可以让生活变得更轻松。

反过来,要在更高(操作系统/平台)级别控制对属性或 XML 文件的访问的安全。

也可以看看:

  • 属性教程 http://java.sun.com/docs/books/tutorial/essential/environment/properties.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

随机推荐