用DOM读取WEB-INF/DBconfig.xml配置文件,必须要指明绝对路径?不能用相对路径?

fengtiehong 2005-07-25 09:36:56
TOMCAT下,
我用dbconfig.xml文件,来配置数据库SQLSERVER的IP地址,用户名等信息。
在类里读取xml文件,但xml文件一定要指明绝对路径,如e:\dbconfig.xml就可以。
这可怎么办?这是要发布的呀?
...全文
421 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
fengtiehong 2005-07-26
  • 打赏
  • 举报
回复
自己顶一下
fengtiehong 2005-07-26
  • 打赏
  • 举报
回复
兄弟们,你们是怎么配置数据库连接信息的呀?
fengtiehong 2005-07-26
  • 打赏
  • 举报
回复
package DataBase;
import java.sql.*;
import javax.servlet.http.*;
import javax.xml.parsers.*;
import org.w3c.dom.*;

public class MyDbBean {
private
Statement stmt = null;
ResultSet rs = null;
private
Connection conn = null;
//构造函数
public MyDbBean(){
String filepath="/WEB-INF/dbconfig.xml";
String url="";
String usr="sbgl";
String pas="sbglsbgl";
try{
//新建一个XML解析工厂
DocumentBuilderFactory dbf=DocumentBuilderFactory.newInstance();
DocumentBuilder builder =dbf.newDocumentBuilder();
builder.parse(getClass().getResourceAsStream(filepath));
Document doc=builder.newDocument();
//获根节点
Element root=doc.getDocumentElement();
NodeList nl=root.getElementsByTagName("dburl");
Element dburl =(Element)nl.item(0);
url=dburl.getFirstChild().getNodeValue();

}
catch (Exception ex) {
System.err.println("XML文件读取错误 " + ex.getMessage());
}
///开始创建数据库
try {
Class.forName("oracle.jdbc.driver.OracleDriver").newInstance();
conn = DriverManager.getConnection(url, usr, pas);
}
catch (Exception ex) {
System.err.println("aq.executeQuery3: " + ex.getMessage());
}
}

//根据dsn参数,加载驱动程序,建立连接
public void OpenConn(String dsn, String uid, String pwd) throws Exception {
try {
dsn = "jdbc:odbc:" + dsn;
Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
conn = DriverManager.getConnection(dsn, uid, pwd);
}
catch (Exception ex) {
System.err.println("aq.executeQuery3: " + ex.getMessage());
}
}

//执行查询类的SQL语句,有返回集
public ResultSet executeQuery(String sql) {
rs = null;
try {
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
rs = stmt.executeQuery(sql);
}
catch(SQLException ex) {
System.err.println("aq.executeQuery11: " + ex.getMessage());
}
return rs;
}

//执行更新类的SQL语句,无返回集
public void executeUpdate(String sql) {
stmt = null;
rs=null;
try {
stmt = conn.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY);
stmt.executeUpdate(sql);
stmt.close();
conn.close();
}
catch(SQLException ex) {
System.err.println("aq.executeUpdate: " + ex.getMessage());
}
}

//关闭对象
public void closeStmt(){
try{
stmt.close();
}
catch(SQLException ex) {
System.err.println("aq.executeQuery1: " + ex.getMessage());
}
}

public void closeConn(){
try{
conn.close();
}
catch(SQLException ex) {
System.err.println("aq.executeQuery2: " + ex.getMessage());
}
}
}
///////////////////////////////在/WEB-INF/dbconfig.xml文件///////////////////////////////
<?xml version="1.0"?>
<conn-config>
<dburl>jdbc:oracle:thin:@144.20.80.146:1521:XSDNFT</dburl>
<user>sbgl</user>
<pass>sbglsbgl</pass>
</conn-config>
///////////////////////////////////////////////////////////////////////
出错:找不到dbcnfig.xml
humanity 2005-07-25
  • 打赏
  • 举报
回复
参数不是可以用 InputStream 么? 还有很多输入源。

不一定要用 File 做参数的,

DocumentBuilder builder = // ...
builder.parse(getClass().getResourceAsStream("/WEB-INF/dbconfig.xml"));
fengtiehong 2005-07-25
  • 打赏
  • 举报
回复
帮我顶

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧