<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Java——采用DOM4J+單例模式實現XML文件的讀取 大家對XML并不陌生,它是一種可擴展標記語言,常常在項目中作為配置文件被使用。XML具有高度擴展性,只要遵循一定的規則,XML的可擴展性幾乎是無限的,而且這種擴展并不以結構混亂或影響基礎配置為代價。項目中合理的使用配置文件可以大大提高系統的可擴展性,在不改變核心代碼的情況下,只需要改變配置文件就可以實現功能變更,這樣也符合編程開閉原則。 但是我們把數據或者信息寫到配置文件中,其他類或者模塊要怎樣讀取呢?這時候我們就需要用到XML API。?DOM4Jj就是一個十分優秀的JavaXML API,具有性能優異、功能強大和極其易使用的特點,下面我們就以java程序連接Oracle數據庫為例,簡單看一下如何使用配置文件提高程序的可擴展性以及DOM4J如何讀取配置文件。 未使用配置文件的程序 ~~~ /* * 封裝數據庫常用操作 */ public class DbUtil { /* * 取得connection */ public static Connection getConnection(){ Connection conn=null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); String url = "jdbc:oracle:thin:@localhost:1525:bjpowernode"; String username = "drp1"; String password = "drp1"; conn=DriverManager.getConnection(url, username, password); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } } ~~~ 我們可以看到上面代碼中DriverName、url等信息都是都是寫死在代碼中的,如果數據庫信息有變更的話我們必須修改DbUtil類,這樣的程序擴展性極低,是不可取的。 我們可以把DriverName、url等信息保存到配置文件中,這樣如果修改的話只需要修改配置文件就可以了,程序代碼根本不需要修改。 ~~~ <?xml version="1.0" encoding="UTF-8"?> <config> <db-info> <driver-name>oracle.jdbc.driver.OracleDriver</driver-name> <url>jdbc:oracle:thin:@localhost:1525:bjpowernode</url> <user-name>drp1</user-name> <password>drp1</password> </db-info> </config> ~~~ 然后我們還需要建立一個配置信息類來用來存取我們的屬性值 ~~~ /* * jdbc配置信息 */ public class JdbcConfig { private String driverName; private String url; private String userName; private String password; public String getDriverName() { return driverName; } public void setDriverName(String driverName) { this.driverName = driverName; } public String getUrl() { return url; } public void setUrl(String url) { this.url = url; } 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; } @Override public String toString() { // TODO Auto-generated method stub return this.getClass().getName()+"{driverName:" + driverName + ",url:" + url + ",userName:" + userName + "}"; } } ~~~ 接下來就是用DOM4J讀取XML信息,并把相應的屬性值保存到JdbcConfig中 ~~~ /* * DOM4J+單例模式解析sys-config.xml文件 */ public class XmlConfigReader { //懶漢式(延遲加載lazy) private static XmlConfigReader instance=null; //保存jdbc相關配置信息 private JdbcConfig jdbcConfig=new JdbcConfig(); private XmlConfigReader(){ SAXReader reader=new SAXReader(); InputStream in=Thread.currentThread().getContextClassLoader().getResourceAsStream("sys-config.xml"); try { Document doc=reader.read(in); //取得jdbc相關配置信息 Element driverNameElt=(Element)doc.selectObject("/config/db-info/driver-name"); Element urlElt=(Element)doc.selectObject("/config/db-info/url"); Element userNameElt=(Element)doc.selectObject("/config/db-info/user-name"); Element passwordElt=(Element)doc.selectObject("/config/db-info/password"); //設置jdbc相關配置信息 jdbcConfig.setDriverName(driverNameElt.getStringValue()); jdbcConfig.setUrl(urlElt.getStringValue()); jdbcConfig.setUserName(userNameElt.getStringValue()); jdbcConfig.setPassword(passwordElt.getStringValue()); } catch (DocumentException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public static synchronized XmlConfigReader getInstance(){ if (instance==null){ instance=new XmlConfigReader(); } return instance; } /* * 返回jdbc相關配置 */ public JdbcConfig getJdbcConfig(){ return jdbcConfig; } public static void main(String[] args){ JdbcConfig jdbcConfig=XmlConfigReader.getInstance().getJdbcConfig(); System.out.println(jdbcConfig); } } ~~~ 然后我們的數據庫操作類就可以使用XML文件中的屬性值了 ~~~ /* * 封裝數據庫常用操作 */ public class DbUtil { /* * 取得connection */ public static Connection getConnection(){ Connection conn=null; try { JdbcConfig jdbcConfig=XmlConfigReader.getInstance().getJdbcConfig(); Class.forName(jdbcConfig.getDriverName()); conn=DriverManager.getConnection(jdbcConfig.getUrl(), jdbcConfig.getUserName(), jdbcConfig.getPassword()); } catch (ClassNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } return conn; } } ~~~ 現在我們可以看出來DriverName、url等信息都是通過jdbcConfig直接獲得的,而jdbcConfig中的數據是通過DOM4J讀取的XML,這樣數據庫信息有變動我們只需要通過記事本修改XML文件整個系統就可以繼續運行,真正做到了程序的可擴展,以不變應萬變。
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看