Rumah pangkalan data tutorial mysql DOM4J 读取XML配置文件进行数据库连接

DOM4J 读取XML配置文件进行数据库连接

Jun 07, 2016 pm 03:12 PM
dom4j xml memperkenalkan pangkalan data membaca kelakuan menyambung Fail konfigurasi

介绍介绍DOM4J。 据说是非常优秀非常优秀的Java XML API( Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP.

    介绍介绍DOM4J。

   据说是非常优秀非常优秀的Java XML  API(Dom4j is an easy to use, open source library for working with XML, XPath and XSLT on the Java platform using the Java Collections Framework and with full support for DOM, SAX and JAXP.)。

    关于XML文件。

   A君问了我一个问题,为什么java中XML作为配置文件,为什么不用其他的呢?像text文件等等。

DOM4J 读取XML配置文件进行数据库连接

   我的第一个反应是,为(喂)什么就吃什么。。。然后再问为什么。。。开始的时候模仿着做,时间长的时候思

考一些经常使用的东西的原因,就像为什么同一个公司,他的职位比我高一样。。。我们需要的是思考和学习。。。

   转回来说说我们配置文件的特点:我们在这里的配置文件需要能够存放少量的数据,并易于操作和维护。所以在

开始进行选择的时候就会综合考虑,text的特性,编码问题等等。所以综合考虑的话就会把XML作为j2ee的一个标准

而不是text作为j2ee的标准。(仅是我的理解......)

 

    最开始我们连接数据库的方式:

/**	 * 取得connection
	 * @return
	 * 
	 */
	public static Connection getConnection() throws ClassNotFoundException
	{
                  //数据库连接对象。
		Connection conn = null;
		try
		{
                           //驱动名称。
			Class.forName("oracle.jdbc.driver.OracleDriver");
			//数据库连接字符串。
			String url = "jdbc:oracle:thin:@localhost:1521:BJPOWERNODE";
                           //oracle数据库用户名和密码。
			String username = "drp";
			String password = "drp";
                           //连接数据库。
			conn = DriverManager.getConnection(url, username, password);
		}catch(ClassNotFoundException e){
			//打印错误。
			e.printStackTrace();
		}catch(SQLException e){
                           //打印错误。
			e.printStackTrace();
		}
		//返回连接对象。
		return conn;
     }
Salin selepas log masuk


   进行了些许的优化

   我们把一些连接数据的配置文件放到XML文件中,很明显,我们这样做的目的,为了改变方便。从变化的角度来

预测问题,所以把最开始的配置数据放到连接数据库类的代码中,抽取出来了,我们放到了配置文件中。

 

   连接的配置信息,我们放到web.xml中。

<?xml version="1.0" encoding="UTF-8"?>
<config>
	<db-info>
		<driver-name>oracle.jdbc.driver.OracleDriver</driver-name>
		<url>jdbc:oracle:thin:@localhost:1521:BJPOWERNODE</url>
		<user-name>drp</user-name>
		<password>drp</password>
	</db-info>
</config>
Salin selepas log masuk


   这样抽取出来的话,我们要从这个XML文件中读取一些驱动名称,连接字符串,用户名称和密码信息了。

   如果我们把读取和连接放到连接这个类(DbUtil数据库操作工具类)中的话,这个类的职责就太重,这样不利于

大型系统的扩展工作。于是,我们把读取配置文件这个工作给了专门的一个类来干这件事情,我们命名他为

XmlConfigReader ,用这个类读取XML文件。

 

   从网上查找关于读取XML文件的文章,源码也很多,据说有四种方式,http://developer.51cto.com/art/201106/270685.htm 在这里就不详细说明了。我们这里采用的是DOM4j的方式来读取XML文件。主要是引入dom4j相应的包和在使用过程中查看dom4j的API就可以喽。

 

   读取配置文件,我们读取的是字符串,驱动名称,连接字符串,用户名称和密码信息,他们是一个整体,我们函

数的返回值如果是字符串的话,再连接数据库的时候还要把这个长长的字符串分开,这样很不方便。于是我们把他们

进行了封装,我们把他们封装成为一个配置的工具类,JdbcConfig,这样我们传递一个整体就可以了。就像人是一个

整体的,我们不要把他的胳膊腿等分开传递。

 

 

   我们封装的配置文件实体类

/**
 * jdbc配置信息。
 * @author lovesummer
 *
 */

public class JdbcConfig {
	

	//连接字符串。
	private String url;
	//用户名。
	private String userName;
	//密码。
	private String password;
	//驱动器的名称。
	private String driverName;
	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;
	}
	
	//覆盖object的toString方法。
	@Override
	public String toString() {
		// TODO Auto-generated method stub
		return this.getClass().getName() + "{driverName:" + driverName + ", url:" + url + ",userName :" + userName + "}";
	}


}
Salin selepas log masuk


    我们读取配置文件的类:

 

package com.bjpowernode.drp.util;
import java.io.InputStream;
import javax.servlet.jsp.tagext.TryCatchFinally;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
//读取配置文件类。
/**
 * 采用单例模式解析sys-config.xml文件。
 * 解析sys-config.xml文件。
 *@author lovesummer
 *
 */
public class XmlConfigReader {
	
	//勤汉式。
	//私有的静态的成员变量。
	private static XmlConfigReader instance = new XmlConfigReader();
	
	//保存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);
			//取得xml中的Element。1 、取出驱动器的名字。
			Element driverNameElt = (Element)doc.selectObject("/config/db-info/driver-name");
			
			
			//2 、取出url字符串。
			Element urlElt = (Element)doc.selectObject("/config/db-info/url");
			//3、取出用户名称和密码。
			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) {
			// 打印错误
			e.printStackTrace();
		}
		
	}
	
	//公共的静态的入口方法。
	public static XmlConfigReader getInstance()
	{
		return instance;
	}
	
	/**
	 * 返回jdbc相关配置。
	 * @return
	 */
	public JdbcConfig getJdbcConfig(){
		
		return jdbcconfig;
	}
}


Salin selepas log masuk


 

    优化后我们连接数据库的类(就像改革开放前后的中国):

 

/**
 * 封装数据库常用操作,工具类
 * @author lovesummer
 *
 */
public class DbUtil {
	/**
	 * 取得connection
	 * @return
	 * 
	 */
	public static Connection getConnection() throws ClassNotFoundException
	{
		Connection conn = null;
			
		try {
			//新建jdbc配置类。
			JdbcConfig jdbcconfig = XmlConfigReader.getInstance().getJdbcConfig();
			//取出驱动器的名字。
			Class.forName(jdbcconfig.getDriverName());
			
			//取得连接对象。
			conn = DriverManager.getConnection(jdbcconfig.getUrl(), jdbcconfig.getUserName(), jdbcconfig.getPassword());
			
		} catch (ClassNotFoundException e) {
			// 抛出 exception
			e.printStackTrace();
		}catch(SQLException e)
		{
			e.printStackTrace();
		}
		
		return conn;
		
	}
         
	//测试。
	public static void main(String[] args ) throws ClassNotFoundException{
		System.out.println(DbUtil.getConnection());
	}

}
Salin selepas log masuk


 

DOM4J 读取XML配置文件进行数据库连接DOM4J 读取XML配置文件进行数据库连接

 

 

    优化后把每个类的职责都分工明确了,在这基础上还可以再进行优化的。在这里就不讲述了。在这过程中学习到了

代码优化的这种思维方式,装上了程序员的思想,代码就这样一步步有了灵魂........加油.....

 

 

 

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Di manakah profil pengguna win10 Bagaimana untuk menyediakan profil pengguna dalam Win10 Di manakah profil pengguna win10 Bagaimana untuk menyediakan profil pengguna dalam Win10 Jun 25, 2024 pm 05:55 PM

Baru-baru ini, ramai pengguna sistem Win10 ingin menukar profil pengguna, tetapi mereka tidak tahu cara melakukannya Artikel ini akan menunjukkan kepada anda cara menetapkan profil pengguna dalam sistem Win10! Bagaimana untuk menyediakan profil pengguna dalam Win10 1. Pertama, tekan kekunci "Win+I" untuk membuka antara muka tetapan, dan klik untuk memasukkan tetapan "Sistem". 2. Kemudian, dalam antara muka yang dibuka, klik "Perihal" di sebelah kiri, kemudian cari dan klik "Tetapan Sistem Lanjutan". 3. Kemudian, dalam tetingkap pop timbul, tukar ke bar pilihan "" dan klik "Konfigurasi Pengguna" di bawah.

iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak iOS 18 menambah fungsi album 'Dipulihkan' baharu untuk mendapatkan semula foto yang hilang atau rosak Jul 18, 2024 am 05:48 AM

Keluaran terbaharu Apple bagi sistem iOS18, iPadOS18 dan macOS Sequoia telah menambah ciri penting pada aplikasi Photos, yang direka untuk membantu pengguna memulihkan foto dan video yang hilang atau rosak dengan mudah disebabkan pelbagai sebab. Ciri baharu ini memperkenalkan album yang dipanggil "Dipulihkan" dalam bahagian Alat pada apl Foto yang akan muncul secara automatik apabila pengguna mempunyai gambar atau video pada peranti mereka yang bukan sebahagian daripada pustaka foto mereka. Kemunculan album "Dipulihkan" menyediakan penyelesaian untuk foto dan video yang hilang akibat kerosakan pangkalan data, aplikasi kamera tidak disimpan ke pustaka foto dengan betul, atau aplikasi pihak ketiga yang menguruskan pustaka foto. Pengguna hanya memerlukan beberapa langkah mudah

Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Tutorial terperinci tentang mewujudkan sambungan pangkalan data menggunakan MySQLi dalam PHP Jun 04, 2024 pm 01:42 PM

Cara menggunakan MySQLi untuk mewujudkan sambungan pangkalan data dalam PHP: Sertakan sambungan MySQLi (require_once) Cipta fungsi sambungan (functionconnect_to_db) Fungsi sambungan panggilan ($conn=connect_to_db()) Laksanakan pertanyaan ($result=$conn->query()) Tutup sambungan ( $conn->close())

Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Bagaimana untuk mengendalikan ralat sambungan pangkalan data dalam PHP Jun 05, 2024 pm 02:16 PM

Untuk mengendalikan ralat sambungan pangkalan data dalam PHP, anda boleh menggunakan langkah berikut: Gunakan mysqli_connect_errno() untuk mendapatkan kod ralat. Gunakan mysqli_connect_error() untuk mendapatkan mesej ralat. Dengan menangkap dan mengelog mesej ralat ini, isu sambungan pangkalan data boleh dikenal pasti dan diselesaikan dengan mudah, memastikan kelancaran aplikasi anda.

Bagaimana untuk menggunakan fungsi PHP untuk memproses data XML? Bagaimana untuk menggunakan fungsi PHP untuk memproses data XML? May 05, 2024 am 09:15 AM

Gunakan fungsi PHPXML untuk memproses data XML: Menghuraikan data XML: simplexml_load_file() dan simplexml_load_string() memuatkan fail XML atau rentetan. Akses data XML: Gunakan sifat dan kaedah objek SimpleXML untuk mendapatkan nama elemen, nilai atribut dan subelemen. Ubah suai data XML: tambah elemen dan atribut baharu menggunakan kaedah addChild() dan addAttribute(). Data XML bersiri: Kaedah asXML() menukar objek SimpleXML kepada rentetan XML. Contoh praktikal: menghuraikan XML suapan produk, mengekstrak maklumat produk, mengubah dan menyimpannya ke dalam pangkalan data.

Pengenalan terperinci fungsi Samsung S24ai Pengenalan terperinci fungsi Samsung S24ai Jun 24, 2024 am 11:18 AM

2024 ialah tahun pertama telefon mudah alih AI Semakin banyak telefon mudah alih menyepadukan berbilang fungsi AI Diperkasakan oleh teknologi pintar AI, telefon mudah alih kami boleh digunakan dengan lebih cekap dan mudah. Baru-baru ini, siri Galaxy S24 yang dikeluarkan pada awal tahun ini sekali lagi telah meningkatkan pengalaman AI generatifnya Mari lihat pengenalan fungsi terperinci di bawah. 1. Pemerkasaan AI generatif yang mendalam Siri Samsung Galaxy S24 telah membawa banyak aplikasi pintar melalui pemerkasaan Galaxy AI Fungsi ini disepadukan secara mendalam dengan Samsung One UI6.1, membolehkan pengguna memperoleh pengalaman pintar yang mudah pada bila-bila masa, dengan ketara. meningkatkan prestasi telefon bimbit Kecekapan dan kemudahan penggunaan. Fungsi carian segera yang dipelopori oleh siri Galaxy S24 adalah salah satu sorotan Pengguna hanya perlu menekan dan menahan

Pengenalan kepada platform semakan skor dalam talian (alat pertanyaan skor yang mudah dan pantas) Pengenalan kepada platform semakan skor dalam talian (alat pertanyaan skor yang mudah dan pantas) Apr 30, 2024 pm 08:19 PM

Alat pertanyaan skor pantas memberikan lebih banyak kemudahan untuk pelajar dan ibu bapa Dengan perkembangan Internet, semakin banyak institusi pendidikan dan sekolah telah mula menyediakan perkhidmatan semakan skor dalam talian. Untuk membolehkan anda menjejaki kemajuan akademik anak anda dengan mudah, artikel ini akan memperkenalkan beberapa platform semakan skor dalam talian yang biasa digunakan. 1. Kemudahan - Ibu bapa boleh menyemak markah ujian anak-anak mereka pada bila-bila masa dan di mana-mana sahaja melalui platform semakan skor dalam talian. Selagi ada sambungan Internet, sama ada di tempat kerja atau ketika keluar, ibu bapa boleh mengikuti perkembangan status pembelajaran anak-anak mereka dan memberikan bimbingan dan bantuan yang disasarkan kepada anak-anak mereka. 2. Pelbagai fungsi - sebagai tambahan kepada pertanyaan skor, ia juga menyediakan maklumat seperti jadual kursus dan pengaturan peperiksaan Banyak carian dalam talian tersedia.

Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Bagaimana anda menghuraikan dan memproses HTML/XML dalam PHP? Feb 07, 2025 am 11:57 AM

Tutorial ini menunjukkan cara memproses dokumen XML dengan cekap menggunakan PHP. XML (bahasa markup extensible) adalah bahasa markup berasaskan teks yang serba boleh yang direka untuk pembacaan manusia dan parsing mesin. Ia biasanya digunakan untuk penyimpanan data

See all articles