首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> J2EE

JSP 整合 JDOM 實現資料庫到 XML 動態轉換完整指南

     編輯:J2EE

為何選擇 JDOM?

JDOM 是純 Java 的 XML 處理 API,遵循「20% 功能解決 80% 問題」原則:

  • Java 原生設計:符合 Java 集合框架慣例,無需學習 W3C DOM 複雜介面。
  • 效能優於 DOM:輕量樹模型,記憶體佔用低,處理速度快。
  • 功能強於 SAX:支援隨機存取、修改、輸出,非單向流式。
  • 直觀易用:Document、Element、Attribute 直接對應 XML 結構。

環境配置

  1. 下載 JDOM(如 jdom-b8.zip),解壓取出 build/jdom.jar。
  2. 放入 JRE/lib/ext 或專案 WEB-INF/lib、Tomcat common/lib。
  3. SQL Server JDBC 驅動 mssqlserver.jar 放入 Tomcat lib。
  4. 配置 ODBC 資料源:控制台 → 管理工具 → 資料源 (ODBC) → 系統 DSN → 新增 SQL Server 驅動,設定伺服器、資料庫、帳號。

核心類別速覽

包關鍵類別用途
org.jdomDocument, Element, Attribute, Text, Comment, DocType建構、遍歷、修改 XML 樹
org.jdom.outputXMLOutputter, DOMOutputterXML 文字輸出、轉換為 W3C DOM 樹
org.jdom.inputSAXBuilder, DOMBuilder從檔案/流解析 XML 建立 JDOM 樹

實戰:客戶資料動態生成 XML

1. 資料庫表結構

CREATE TABLE Customer (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100),
    phone VARCHAR(20),
    address VARCHAR(200)
);

2. JSP 核心代碼

<%@ page import="java.sql.*, org.jdom.*, org.jdom.output.*" %>
<%
    response.setContentType("text/xml; charset=UTF-8");
    
    // 1. 建立 Document 與根元素
    Document doc = new Document();
    Element root = new Element("customers");
    doc.setRootElement(root);
    
    // 2. 資料庫查詢
    Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
    Connection con = DriverManager.getConnection("jdbc:odbc:DB_CUSTOM", "lgz", "");
    Statement stmt = con.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT * FROM Customer");
    
    // 3. 遍歷結果集,建構 XML 樹
    while (rs.next()) {
        Element customer = new Element("customer");
        customer.setAttribute(new Attribute("id", rs.getString("id")));
        
        customer.addContent(new Element("name").setText(rs.getString("name")));
        customer.addContent(new Element("email").setText(rs.getString("email")));
        customer.addContent(new Element("phone").setText(rs.getString("phone")));
        customer.addContent(new Element("address").setText(rs.getString("address")));
        
        root.addContent(customer);
    }
    
    // 4. 輸出 XML
    XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
    outputter.output(doc, response.getOutputStream());
    
    rs.close(); stmt.close(); con.close();
%>

3. 輸出範例

<?xml version="1.0" encoding="UTF-8"?>
<customers>
  <customer id="1">
    <name>張三</name>
    <email>zhang@example.com</email>
    <phone>02-12345678</phone>
    <address>台北市信義區...</address>
  </customer>
  <customer id="2">...</customer>
</customers>

進階應用場景

1. XML 應用伺服器

模板驅動:腳本語言嵌入 SQL → 動態構建 XML → XSLT 轉換為 HTML/PDF/其他格式。支援多渠道輸出(Web、行動、列印)。

2. 基於 XML 的桌面應用

同一 XML 資料源 + 多個 XSL 樣式表 = 多種視圖(表格、圖表、報表、表單)。無需重寫程式碼即可變更呈現邏輯。

最佳實踐建議

  1. 分離關注點:JSP 僅負責協調,XML 建構邏輯封裝至 JavaBean/Service 類。
  2. 使用連線池:DataSource 替代 DriverManager,提升併發效能。
  3. 大資料集分頁/串流:避免一次性載入大量記憶體,考慮 StAX 或 SAX 事件式生成。
  4. 字元編碼統一:資料庫、JDBC、JVM、HTTP 回應全鏈路 UTF-8。
  5. 錯誤處理:try-with-resources 確保資源釋放,異常時輸出標準錯誤 XML 格式。

總結

JDOM 以 Java 原生 API 橋接關係資料庫與 XML 世界,使「資料庫 → XML → 多格式輸出」管道構建極為簡單。掌握 Document/Element/Attribute 樹操作與 XMLOutputter 輸出,即可實現靈活的資料交換與呈現層解耦。現代架構中,此模式演變為 RESTful API 直接回傳 JSON/XML,但 JDOM 於舊系統整合、報表生成、離線文檔產出仍具實用價值。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved