亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 學院 > 開發設計 > 正文

在Web應用中使用XML文件配置數據源

2019-11-18 12:48:27
字體:
來源:轉載
供稿:網友

  在web應用中使用xml配置數據源,我們一般要通過以下幾步來實現:
  
  (一)  編寫配置數據源的XML文件
  
  本例中的配置文件存放在/WEB-INF/目錄下,也可以放在別的目錄下,只是在操作的時候不同罷了。
  
 ?。?)  MS SQL 的配置文件/WEB-INF/MSSQL.xml,內容如下:
  <?xml version="1.0" encoding="UTF-8"?>
  <DataSource>
  <!-- configure the  datasource of MSSQL -->
  <DatabaseUser>sa</DatabaseUser>
  <DatabasePassWord>jckjdkmcj</DatabasePassword>
  <DatabaseName>northwind</DatabaseName>
  <ServerName>10.0.0.168</ServerName>
  <ServerPort>1433</ServerPort>
  <MaxConnections>100</MaxConnections>
  </DataSource>
  
 ?。?)  Oracle的配置文件/WEB-INF/oracle.xml,內容如下:
  <?xml version="1.0" encoding="UTF-8"?>
  <DataSource>
  <!-- configure the  datasource of MSSQL -->
  <DatabaseUser>zhangyi</DatabaseUser>
  <DatabasePassword>jckjdkmcj</DatabasePassword>
  <DatabaseName>zydb</DatabaseName>
  <ServerName>10.0.0.168</ServerName>
  <ServerPort>1521</ServerPort>
  <MaxConnections>100</MaxConnections>
  </DataSource>
  注重:此處兩個文件的格式是一樣的,因為在下面的解析的過程中我們用到了是用的同一個接口
  
  (二)  設計解析XML文件的一個接口
  
  在此,我們用定義了一個接口:config.java
  /*
  * Created on 2005-8-29
  *
  * the supper class for parse the xml files
  *
  * TODO To change the template for this generated file go to
  * Window - PReferences - Java - Code Style - Code Templates
  */
  package zy.pro.wd.xml;
  
  import java.io.InputStream;
  import javax.xml.parsers.*;
  import javax.servlet.ServletContext;
  import org.xml.sax.InputSource;
  import org.w3c.dom.*;
  
  /**
  * @author zhangyi
  *
  * TODO To change the template for this generated type comment go to Window -
  * Preferences - Java - Code Style - Code Templates
  */
  public abstract class Config {
  /**
  * the supper class for parse the xml files
  */
  protected Element root;
  
  protected void init(ServletContext sctx, String xmlFile) throws Exception {
  InputStream is=null;
  try{
  is=sctx.getResourceAsStream(xmlFile);
  DocumentBuilderFactory factory=DocumentBuilderFactory.newInstance();
  DocumentBuilder builder=factory.newDocumentBuilder();
  Document doc=builder.parse(new InputSource(is));
  root=doc.getDocumentElement();
  System.out.println("root:  "+root );
  
  }catch(Exception e){
  e.printStackTrace();
  }finally{
  if(is!=null){
  is.close();
  }
  }
  }
  protected String getElementText(Element parent,String name){
  NodeList nodeList=parent.getElementsByTagName(name);
  if(nodeList.getLength()==0){
  return null;
  }
  
  Element element=(Element)nodeList.item(0);
  StringBuffer sb=new StringBuffer();
  for(Node child=element.getFirstChild();child!=null;child=child.getNextSibling()){
  if(child.getNodeType()==Node.TEXT_NODE){
  sb.append(child.getNodeValue());
  }
  }
  return sb.toString().trim();
  
  }
  protected void cleanup(){
  root=null;
  }
  }
  
  (三)  定義解析我們自定義配置文件(XML文件)的 抽象類,此處我們定義了DataSourceConfig.java,文件內容如下:
  /*
  * Created on 2005-8-29
  *
  *reading the JDBC datasource properties from xml files
  *
  * TODO To change the template for this generated file go to
  * Window - Preferences - Java - Code Style - Code Templates
  */
  package zy.pro.wd.xml;
  
  import javax.sql.DataSource;
  import javax.servlet.ServletContext;
  
  /**
  * @author zhangyi
  *
  * TODO To change the template for this generated type comment go to Window -
  * Preferences - Java - Code Style - Code Templates
  */
  public abstract class DataSourceConfig extends Config {
  private static final String DATABASE_USER = "DatabaseUser";
  
  private static final String DATABASE_PASSWord = "DatabasePassword";
  
  private static final String SERVER_NAME = "ServerName";
  
  private static final String DATABASE_NAME = "DatabaseName";
  
  private static final String SERVER_PORT = "ServerPort";
  
  protected DataSource ds;
  protected String databaseUser;
  protected String databasePassword;
  protected String serverName;
  protected String portNumber;
  protected String databaseName;
  
  public void init(ServletContext sctx,String xmlFile) throws Exception{
  super.init(sctx,xmlFile);
  databaseUser=this.getElementText(root,DATABASE_USER);
  System.out.println("<br>databaseUser:      "+databaseUser);
  databasePassword=this.getElementText(root,DATABASE_PASSWORD);
  System.out.println("<br>databasePassword:     "+databasePassword);
  databaseName=this.getElementText(root,DATABASE_NAME);
  System.out.println("<br>databaseName:    "+databaseName);
  serverName=this.getElementText(root,SERVER_NAME);
  System.out.println("<br>serverName:     "+serverName);
  portNumber=this.getElementText(root,SERVER_PORT);
  System.out.println("<br>portNumber:      "+portNumber);
  }
  public DataSource getDataSource(){
  return ds;
  }
  }
  
  (四)  定義我們解析數據源配置文件的實現類
  
 ?。?)  定義解析MS SQL 數據源的實現類MSSQLConfig.java.內容如下:
  /*
  * Created on 2005-8-31
  *
  * TODO To change the template for this generated file go to
  * Window - Preferences - Java - Code Style - Code Templates
  */
  package zy.pro.wd.xml;
  
  import javax.servlet.ServletContext;
  
  import org.apache.commons.dbcp.BasicDataSource;
  import com.microsoft.jdbc.base.BaseConnectionPool;
  
  /**
  * @author zhangyi
  *
  * TODO To change the template for this generated type comment go to
  * Window - Preferences - Java - Code Style - Code Templates
  */
  public class MSSQLConfig extends DataSourceConfig {
  
  private static final String MAX_CONNECTIONS = "MaxConnections";
  
  public void init(ServletContext ctx, String xmlFile) throws Exception {
  super.init(ctx, xmlFile);
  String databaseURL = "jdbc:microsoft:sqlserver://" + this.serverName + ":"
  + this.portNumber + ";databaseName=" + this.databaseName;
  System.out.println("<br> databaseURL :    " + databaseURL);
  ds = new BasicDataSource();
  /*
  *此處使用的是apache 給提供的DBCP數據源
  */
  System.out.println("<br>ds:      " + ds);
  ((BasicDataSource) ds).setUrl(databaseURL);
  ((BasicDataSource) ds).setUsername(this.databaseUser);
  ((BasicDataSource) ds).setPassword(this.databasePassword);
  
  try {
  int maxConnections = Integer.parseInt(this.getElementText(root,
  MAX_CONNECTIONS));
  ((BasicDataSource) ds).setMaxActive(maxConnections);
  } catch (Exception e) {
  e.printStackTrace();
  }
  this.cleanup();
  
  }
  }
  
 ?。?)  定義實現解析oracle數據源的實現類OracleConfig.java,內容如下:
  /*
  * Created on 2005-8-29
  *
  *parse the xml file of the oracle configure
  *
  * TODO To change the template for this generated file go to
  * Window - Preferences - Java - Code Style - Code Templates
  */
  pa

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
久久成人国产精品| 日韩在线观看视频免费| 欧美激情在线视频二区| 国产亚洲福利一区| 日韩av电影中文字幕| 国产精品第10页| 久久久噜噜噜久久中文字免| 亚洲丁香久久久| 97精品伊人久久久大香线蕉| 久久夜色精品国产| 91理论片午午论夜理片久久| 欧美日韩另类视频| 97视频在线观看播放| 国产在线拍偷自揄拍精品| 国产精品爽黄69| 日韩欧美在线视频免费观看| 日本一区二区在线免费播放| 国产精品爱久久久久久久| 亚洲国产精品嫩草影院久久| 日韩hd视频在线观看| 日韩经典中文字幕在线观看| 欧美一区二区色| 亚洲美女激情视频| 国产精品三级在线| 欧美成人亚洲成人日韩成人| 久久精品99国产精品酒店日本| 精品国偷自产在线视频| 欧美日韩在线一区| 亚洲级视频在线观看免费1级| 久久久久久久久综合| 亚洲精品中文字| 欧美中在线观看| 性夜试看影院91社区| 91午夜在线播放| 亚洲偷熟乱区亚洲香蕉av| 久久久国产精彩视频美女艺术照福利| 欧美在线不卡区| 欧美一区二粉嫩精品国产一线天| 性夜试看影院91社区| 国产美女久久精品| 国产精品igao视频| 亚洲色无码播放| 91免费人成网站在线观看18| 日韩av电影免费观看高清| 国产精品免费久久久久影院| 精品久久久久久久久久国产| 伊人一区二区三区久久精品| 日韩电影在线观看永久视频免费网站| 久久久久久久久久久成人| 在线视频欧美性高潮| 欧美日韩国产在线| 欧美一区二区.| 国产91精品久久久| 狠狠躁夜夜躁人人爽天天天天97| 欧美超级乱淫片喷水| 欧美视频在线观看 亚洲欧| 久久精品国产综合| 日韩精品有码在线观看| 久久久久久久久久久人体| 神马久久桃色视频| 国产成人福利夜色影视| 欧美午夜片欧美片在线观看| 国产又爽又黄的激情精品视频| 日本精品久久久| 亚洲午夜精品久久久久久性色| 国产欧美日韩视频| 日韩在线观看成人| 精品视频—区二区三区免费| 欧美体内谢she精2性欧美| 亚洲第一免费播放区| 精品久久久久久国产| 欧美亚洲另类视频| 日韩精品免费在线观看| 7777精品久久久久久| 91精品国产综合久久男男| 久久国产精品视频| 亚洲自拍中文字幕| 久久伊人91精品综合网站| 亚洲国产日韩欧美在线动漫| 日韩精品极品视频| 国产精品情侣自拍| 91色p视频在线| 精品国产一区久久久| 亚洲欧美中文日韩在线v日本| 日韩精品中文字幕在线播放| 国内精品久久影院| 爽爽爽爽爽爽爽成人免费观看| 国产精品美女久久久久久免费| 色婷婷亚洲mv天堂mv在影片| 91精品国产91久久久久久吃药| 国产在线观看91精品一区| 精品国产乱码久久久久久婷婷| 精品爽片免费看久久| 国产精品美女久久久久av超清| 日韩av电影在线网| 69影院欧美专区视频| 在线精品播放av| 精品亚洲国产成av人片传媒| 成人精品一区二区三区电影黑人| 亚洲视频在线观看网站| 国产精品久久久久久亚洲影视| 久久久久免费精品国产| 日韩亚洲欧美中文高清在线| 国产精品久久久久7777婷婷| 精品国产一区二区在线| 久久精品国产亚洲一区二区| 中文字幕亚洲一区在线观看| 成人免费观看49www在线观看| 91tv亚洲精品香蕉国产一区7ujn| 91手机视频在线观看| 亚洲国产精品福利| 欧美午夜视频一区二区| 成年无码av片在线| 91精品国产高清自在线看超| 久久精品国产欧美亚洲人人爽| 欧美黑人国产人伦爽爽爽| 日韩精品在线第一页| 九九视频这里只有精品| 日韩在线不卡视频| 久久亚洲欧美日韩精品专区| 91免费看片网站| 亚洲性视频网址| 国产一区二区在线免费| 亚洲激情国产精品| 中日韩美女免费视频网址在线观看| 亚洲欧美成人精品| 亚洲精品成a人在线观看| 国产精品久久久久久久久久久久| 久久天天躁狠狠躁夜夜躁2014| 欧美性感美女h网站在线观看免费| 欧美专区在线播放| 欧美性69xxxx肥| 亚洲欧美成人在线| 久久久www成人免费精品张筱雨| 国产成人综合久久| 性日韩欧美在线视频| 欧美视频在线观看免费| 日韩免费在线视频| 亚洲人成在线播放| 欧美第一黄色网| 亚洲黄色片网站| 亚洲美女av在线播放| 久久久亚洲影院你懂的| 成人精品网站在线观看| 精品伊人久久97| 精品视频在线播放色网色视频| 91国产美女在线观看| 在线电影av不卡网址| 55夜色66夜色国产精品视频| 亚洲欧美日韩国产中文| 亚洲高清久久网| 亚洲欧美日韩在线一区| 中文字幕av一区二区| 精品成人乱色一区二区| 91国偷自产一区二区三区的观看方式| 欧美日韩国产中文精品字幕自在自线| 久久香蕉频线观| 成人动漫网站在线观看| 美女扒开尿口让男人操亚洲视频网站| 久久国产视频网站| 国产精品久久久久久久一区探花| 亚洲无线码在线一区观看| 国产精品无av码在线观看| 成人黄色在线免费|