我刚开始使用JSP进行动态Web编程。处理配置的正确方法是什么?
例如,数据库名称,主机,登录名和密码以及服务器中的索引目录等。我主要关心的是密码的安全性。目前,我将数据硬编码到.java文件中,我认为这不是正确的方法,因此我想从您的经验中学习。
配置通常存储在属性或XML文件中,该属性或XML文件放置在应用程序的运行时类路径中或在指定为VM参数的固定位置。可以使用java.util.PropertiesAPI 访问属性文件。可以使用JAXP或JAXB解析XML文件。
java.util.Properties
这是此类属性文件的示例:
jdbc.url = jdbc:mysql:// localhost:3306 / javabase jdbc.driver = com.mysql.jdbc.Driver jdbc.username = Java jdbc.password = d $ 7hF_r!9Y
假定它已命名config.properties并且已放置在类路径的根目录中(或它的根路径已添加到类路径中),以下是从类路径中加载它的方法:
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加载它:
config.xml
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 /平台)上进行控制。