大饼先生 2008-5-28 14:18
Commons-Digester Demo~使用xml配置rule
偶就不解释意思了~~代码很简单,一看就明白的~~
DbConnection.xml(用于配置数据库连接的一些参数,这个是我们要用Digester解析的XML文件。)
[code]
<DbConnection>
<DB_DRIVER>com.mysql.jdbc.Driver</DB_DRIVER>
<DB_URL>
jdbc:mysql://localhost:3306/test
</DB_URL>
<DB_USER>root</DB_USER>
<DB_PASSWORD>123456</DB_PASSWORD>
</DbConnection>
[/code]
DbConnectionRule.xml(Digester解析的配置文件。)
[code]
<digester-rules>
<pattern value="DbConnection">
<object-create-rule classname="com.somepackagename.DbConnection"/>
<call-method-rule pattern="DB_DRIVER" methodname="setDriverClass" paramcount="0"/>
<call-method-rule pattern="DB_URL" methodname="setConnUrl" paramcount="0"/>
<call-method-rule pattern="DB_USER" methodname="setUsername" paramcount="0"/>
<call-method-rule pattern="DB_PASSWORD" methodname="setPassword" paramcount="0"/>
</pattern>
</digester-rules>
[/code]
Dbconnection.java(从XML映射到Java的Bean,为了简单起见,main也写在这里面,直接运行这个程序就行了)
[code]
package com.inspur.sms.pojo;
import java.io.File;
import java.net.URL;
import java.sql.*;
import org.apache.commons.digester.Digester;
import org.apache.commons.digester.xmlrules.DigesterLoader;
public class DbConnection {
private String driverClass;
private String connUrl;
private String username;
private String password;
private Connection conn = null;
private void createConnection(){
try {
Class.forName(driverClass);
conn = DriverManager.getConnection(connUrl, username, password);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public Connection getConnnection(){
createConnection();
return conn;
}
public String getDriverClass() {
return driverClass;
}
public void setDriverClass(String driverClass) {
this.driverClass = driverClass;
}
public String getConnUrl() {
return connUrl;
}
public void setConnUrl(String connUrl) {
this.connUrl = connUrl;
}
public String getUsername() {
return username;
}
public void setUsername(String username) {
this.username = username;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
public static void main(String[] args) throws Exception{
URL path = Thread.currentThread().getContextClassLoader().getResource("");
File rulexml = new File(path.getPath() + "conf/smsconfig/DbConnectionRule.xml"); //------这行和下一行是我本地的xml在classpath下的路径。
File configXML = new File(path.getPath() + "conf/smsconfig/DbConnection.xml");
Digester digester = DigesterLoader.createDigester(rulexml.toURL());
DbConnection conn = (DbConnection) digester.parse(configXML); //--------------这一行就是上面配置运行的结果啦~Digester将xml文件映射成了Bean对象~
System.out.println(conn.driverClass);
}
}
[/code]