Java XML編程指南 內容簡介
分散式Web應用程式是如今最常見、也最值得投入的一種應用程式,建立Web應用程式的最佳方式是使之成為三層應用程式,從而巧妙地區分出其三個組成部分:用戶界面、計算邏輯與數據存儲,而Java與XML的組合提供了建立三層應用程式的最佳手段。基於以上思想,本書作者面向有經驗的程式設計師和計算機專業的學生,通過開發多個實質性的應用程式,介紹了大量與Java、XML、JSP以及XSLT有關的技術;同時,以元編程方式�D�D編寫定製、指導與修改其他程式的程式,在用戶、程式設計師與程式之間建立一種新型關係。本書探討的複合技術既可以分開套用,也可以針對不同系統類型以不同方式結合使用。相信讀者一定會倍感受益。
Java XML編程指南 本書前言
首先是Wrox公司稱職的編輯們:Tim Briggs,Jeremy Beacock,GregoryBeekman以及Paul Cooper。是他們的努力,避免了許多謬誤;是他們的建議,提供了諸多幫助。David Brownell也值得言謝,他曾在許多場合幫助過我們。
還有colgate大學信息技術服務部的人員,特別是Ross Miller,Jim Nesbitt,Bill Howell,以及SBIO的其他善良人士。感謝Dylan Strong,感謝計算機科學系的秘書Charlotte Jablonski,他們的工作總是那么高效。
本書中的一些論點源於1999年春季的獨立研究課題。參與該課題的學生們利用了一學期的時間緊張工作,在此,一併感謝小組成員Hui Cheng,Alan Lewis,Sameer Panjwani和Jon Seidman;Dave Blank和Alison Hatwell;Karthik Jnyarainan(Java老師);以及Matt Seeve和Chris Towt。儘管Colgate 99級的Armando Singer並非該組成員,但他同樣給予了極大幫助,並顯示出卓越才華。
同樣,感謝我們的家人,沒有他們的支持,就沒有我們今天的成功。
Java XML編程指南 本書目錄
第1章 三層Web應用程式
三層應用程式
一個簡單的範例
客戶機端
小型服務程式基礎
JDBC基礎
更好的電話簿
新Servlet類
MiscDB類及其方法
LookerUpper類
HtmlWrapper類
Servlet API綜述
包
主要角色
裝載與實例化
初始化
服務程式的任務:請求與回響
完整的包列表
會話跟蹤
小結
第2章 一個通用的三層應用程式
整體設計與Query2
Query2應用程式
用於數據交換的ENV類
聲明與方法
Env與HTTP請求
根據文本檔案與緩衝閱讀器建立的構造器
其他Env構造器
Env與Properties
DBHandler與Query類
引入、聲明與變數
DBHandler構造器
查詢處理
addQuery()與delQuery()
連線庫方法
Query類
RowSequence與MiscDB實用程式
聲明與構造器
MiscDB實用程式與結果集會元數據
作為惰性序列的ResultSet對象
getRow()與next()
主服務程式
JDBC綜述:Statement、ResultSet、元數據
Statement接口
PreparedStatement擴展了Statement
數據類型
PreparedStatement的setXXX()方法
ResultSet
JDBC的元數據接口
ResultSetMetaData
小結
第3章 三層應用程式的外殼
自己做的三層應用程式(版本1)
版本1a:編輯Query2
Query3:帶有會話的三層應用程式
應用程式指定的檔案
Query3服務程式綜述
doPost()代碼
在Query3中建立與使用會話
HTML生成
根據元素建立頁:wrapPage()
ECS基礎
擴展ECS包
輸出指定類型的頁
模板檔案
Query3中的模板檔案與HTML輸出
模板檔案與Javaserver Pages
使用Query3建立一個應用程式
這是一個應用程式服務器嗎?
連線組合與DBHandler的其餘部分
問題是什麼?可伸縮性與性能
安全性與執行緒安全
連線庫與高速快取
整體設計與介紹順序
Cache類
高速快取範例1:階乘
高速快取範例2:二項式係數
屬性檔案與屬性組
DBConndetionManager
ConnectionPool類
在DBHandler中使用連線組合
小結
第4章 語言、文法與分析程式
用於查詢輸出的模板檔案
微型語言的替換
查詢輸出模板的代碼
正式語言與文法規則
英語範例
文法與分析程式
上下文無關與上下文相關的文法
一小段歷史
EBNF符號
一個範例:.ini檔案作為一種正式語言
文法規則、語義約束與辭彙規則
作為一種正式語言的模板檔案
分析程式綜述
一個範例
分析程式、樹與辭彙分析器
ParseTree類
將樹寫入一個字元串
辭彙分析器
支付:一個小購物卡
大學書店
Env.addBufferedReader()的新代碼
.ini檔案
用戶界面與模板檔案
小給
第5章 XML初步
XML簡介
XML易於閱讀
XML是一種定義標記語言的工具
XML文檔描述了它們自己的語法
XML可以在瀏覽器中顯示�s
XML是對象的一種序列化格式
XML是一種很好的多層應用程式黏合劑
XML是一種重要的授權技術
XML與SGML;XHTML與HTML
結構合理約束
一個HTML/XHTML/XML頁面
一個SGML元素聲明
終止標註、空元素與分析程式
分析程式與規範
HTML與XHTML:區別的總結
XML文檔
文檔、處理器與應用程式
主要的數據類型:CDATA與PCDATA
邏輯結構
文檔語法
注釋CDATA部分與PI
PI的替換
第6章 實體DTD
第7章 DOX、SAX與分析程式
第8章 SAX處理、Sun分析程式與一致性研究
第9章 集成XML微型語言
第10章 JSP與JavaBean
第11章 多支持系統的實現:通用工具
第12章 多支持系統的實現:具體構造
第13章 XSLT和XPath(節選)
Java XML編程指南 文章節選
第1章 三層Web應用程式
本章與下一章是本書其他部分的基礎,其目的在於介紹後續章節中將實際使用到的所有概念。如果你缺乏耐心並且已經具備了相關的基礎知識,可以跳過這兩章的內容,在需要的時候再返回閱讀這部分。
我們主要希望你做到以下三點:
?理解三層Web應用程式的結構
?熟悉Servlet API
?熟悉JDBC
在本章中,我們要介紹三層應用程式,並討論一個簡單範例(以此奠定本專題的基礎):可以用於查找電話號碼的Phonebook應用程式。誠然,對本書來說,這不是最適合於一開始就吸引讀者的應用程式:本來,我們考慮用一個植物的資料庫,每一種植物都帶有一個拉丁文名稱,並配有相應的圖像與音樂。然而,這樣會脫離主題,且兩章的內容顯然超出了我們希望的篇幅。不過,在本書結束前,我們一定會給大家奉獻足夠精彩的應用程式。
我們介紹的Phonebook範例在設計與結構組成上都非常簡單,讀者一旦掌握了基礎知識之後,我們將馬上編寫出更好的Phonebook,使之允許一個人擁有多個電話號碼。更重要的是,將中間層的不園任務,如資料庫訪問與HTML生成,分配給不同的類,令這些類得到獨立開發,而不用修改基本的小型服務程式。我們還要包含一些實用程式類與一個有用的Logger類。屆時,將看到兩個稍稍不同的小型服務程式,並以綜述Servlet API 2.1來結束本章。
本章的內容包括:
?三層應用程式
?小型服務程式基礎,包括小型服務程式中的請求一回響處理
?JDBC基礎:驅動程式、連線、查詢與結果集合
?小型服務程式的生存期
?Logger類與自己註冊的優點
?其他JDBC:準備好的語句
?HTML生成的基礎
?ServletAPI綜述
該列表的最後一項非常大。除了JavaDoc檔案內容之外,我們還要提供附加內容,相信它不會白占空間的。API的邏輯結構及其最重要的部分也是我們涉及的目標。最後,還有一個“插入索引”,它將常見的任務與實現它們所需的API部分聯繫了起來。
三層應用程式
一個分散式Web應用程式的不同部分分布在一個網路的不同計算機上。那么都有哪些部分呢?通常的設計模式會將應用程式劃分為View、Controller與Model,這些是應用程式的邏輯組件,它們的分布僅僅表示了最明顯的基本邏輯結構。
Model(模型或應用程式邏輯)是應用程式的內部成分,構成了應用程式的數據模型。View與Controller共同形成了用戶界面:View(視圖或表示邏輯)向用戶顯示了Model的不同部分與特徵,Controller(控制器或事務邏輯)允許用戶修改Model的值,或改變查看Model的方式。通常,用戶不會覺察到Controller的存在:在其最簡單的形式里,它僅僅處理其他兩層之間的通信。根據項目的約束,我們將看到應用程式與事務邏輯駐留的位置會有些變化。除了Model、View與Controller外,應用程式還需要一個持久穩定的存儲:在應用程式不同運行之間,保存其狀態。該存儲可以是一個檔案系統或資料庫。
考慮一個熟悉的應用程式,如Microsoft Excel。視圖是一個行與列的格線,顯示電子表格不同部分中的數字與公式,或許是那些數字與公式的圖表。控制器由工具列上的按鈕、選單命令與快捷鍵組成。模型是一個約束傳播系統,它保證對電子表格一個區域的修改會傳播到其餘每個部分中,所以需要維護由公式表示的約束。電子表格的狀態保存在一個擴展名為.xls的檔案中。(摘自1-2頁)