作者簡介
本叢書的作者團隊對
電腦程式設計類圖書市場有很好的敏感性,對出版動態有準確的把握,對計算機技術的發展進行長期跟蹤。該團隊長期以來致力於計算機圖書的內容提供和策劃,已經出版的多個系列圖書都在計算機圖書市場上有良好的口碑,都曾經引領了當年的電腦程式設計暢銷書。
內容簡介
全書分為6篇,總計12章內容,全面介紹了學習和套用Java Web進行程式開發的各種陷阱與謬誤、技術細節與經驗技巧、常用的算法及解決方案。其涉及的技術主要包括JSP、Servlet、JDBC、JavaScript、CSS、AJAX和資料庫套用等基礎知識,jQuery、報表列印、Java Mail等一些相對高級的技術,同時還包括Spring、Hibernate、Struts1和Struts2主流的框架技術。
宣傳語
高薪工程師經驗分享
事半功倍的編程手記
凝聚5位開發高手7年開發心血精華所得,程式開發人員開發的必備寶典
320個感悟、技巧、陷阱、謬誤、算法和方案,
幫您輕鬆掌握程式開發方法,提升開發實戰技能。
內 容 簡 介
這是一本集編程感悟、技巧、陷阱、謬誤、算法和方案為一體的編程書籍,旨在引導讀者如何學習編程,幫助讀者豐富編程經驗。全書分為6篇,總計12章內容,全面介紹了學習和套用Java Web進行程式開發的各種陷阱與謬誤、技術細節與經驗技巧、常用的算法及解決方案。其涉及的技術主要包括JSP、Servlet、JDBC、JavaScript、CSS、AJAX和資料庫套用等基礎知識,jQuery、報表列印、Java Mail等一些相對高級的技術,同時還包括Spring、Hibernate、Struts1和Struts2主流的框架技術。
本書附帶有配套DVD
光碟,光碟中提供書中全部實例和項目的
原始碼,這些原始碼都是經過作者精心調試通過的,保證能夠在Windows XP、Windows 2003及Windows 7
作業系統下編譯和運行。
本書非常適合大、中專院校在校生、畢業生、求職者、編程愛好者學習,同時也可以作為想要學習編程的初級人員的指導用書。
前 言
許多求職人員在面試時經常遇到的一個問題是“您有幾年開發經驗?”,這對於一個剛剛走出校園的畢業生來說簡直就是一顆“核子彈”。“經驗”真的很重要嗎?是的,它是衡量一個人能力的砝碼,它將許多求職者擋在門外。
本書不是基礎類書籍,不是項目、案例類書籍,它是一部提高編程經驗的書籍。它涵蓋了100個編程細節、140個編程技巧、20個編程陷阱、20個編程謬誤、20個最佳化算法和20個解決方案。這些內容是作者結合自己多年的實際開發經驗,精心篩選和提煉而成的。如果您想提高自己的編程經驗,本書將是最佳的選擇!
本書內容
本書包含6篇,總計12章內容。主要包括編程經驗與感悟篇、陷阱與謬誤篇、技術細節篇、編程技巧篇、算法和效率篇、解決方案篇等內容。
本書內容結構如下圖所示。
本書特色
內容經典,匯聚精華
書中每項內容都是作者精心選擇的,具有很強的代表性和實用性。
講解風趣,詼諧生動
無論在目錄名稱上還是在技術講解上,書中始終突出趣味性。在目錄選擇上,作者想盡辦法使目錄更新穎,更能夠體現內容的特點。在技術講解中,通過穿插故事、比喻等形式,幫助讀者消化和吸收所介紹的內容。
書中在介紹知識點時,都會對相應專題進行深入剖析,使知識點呈現系統性、全面性。避免出現一筆帶過、言之無物的情況。
圖文並茂,形象易懂
書中使用了大量的流程圖、示意圖、圖例來說明和演示技術,使讀者通過視覺更直觀地理解內容,例如以下的示意圖。
代碼規範,注釋詳盡
書中實例代碼都是按照商業編碼規則書寫的,為了方便用戶閱讀代碼,幾乎所有代碼都提供有詳細注釋,例如以下的代碼注釋。
本書約定
書中的所有實例在光碟中均有原始碼。原始碼在光碟中的存儲形式為“MR\Instance\1\01\ 1.1”,其中,“MR\Instance\”是固定的目錄部分,其後的“1”表示實例所在的章號,而章號後的“01”表示二級標題的序號,最後的“1.1”表示工程名稱。目錄示意圖如下圖所示。
在本書的二級標題下會存在多個實例的情況,為了區分不同的實例,實例的工程名稱都是不同的。例如,01二級標題下存在兩個實例,它們的存儲形式為:“MR\Instance\1\01\ 1.1.1”和“MR\ Instance\1\01\1.1.2”。
書中有些實例會用到資料庫。為了保證程式的運行,用戶需要將實例使用的資料庫安裝到本地
機器上。詳細安裝方法請參考光碟中的“Java Web編程之道光碟使用說明書”。
由於篇幅限制,書中有些實例只給出了核心代碼,這並不影響讀者的學習。完整代碼可以在本書的光碟中找到。
在使用本書的實例之前,請仔細閱讀光碟中的“Java Web編程之道光碟使用說明書”。
附贈DVD光碟
為了幫助讀者學習和練習書中的實例,本書附贈有DVD光碟,裡面提供書中所有實例項目的原始碼、素材、Java Web編程之道光碟使用說明書,並贈送Java Web相關學習資料。光碟目錄如下圖所示。
註:讀者在使用本書光碟源碼時,請仔細閱讀光碟使用說明書。
本書讀者群
本書非常適合以下人員閱讀:
Java求職人員
大、中專院校的在校生和畢業生
相關培訓機構的學員
語言已經入門,急需進一步提高的編程人員
編程愛好者
有多年開發經驗的程式設計師
學習答疑
如果您在學習或使用本書的過程中遇到問題或疑惑,可以通過如下方式與我們聯繫:
我們承諾將在5個工作日內給您提供解答。
本書作者
明日科技
2010年12月
目 錄
第1篇 編程經驗與感悟篇
第1章 編程經驗談6則
經驗01 樂不思蜀——尋找編程的樂趣 3
經驗02 水滴石穿——編程學習經驗談 4
經驗03 舉足輕重——代碼規範經驗談 6
經驗04 技高一籌——資料庫設計經驗談 8
經驗05 征戰沙場——項目實戰經驗談 10
經驗06 步步高升——面試經驗談 12
第2章 編程感悟6則
感悟01 腳踏實地——程式設計師的成長之路 15
感悟02 與時俱進——程式設計師的生存法則 16
感悟03 制勝法寶——程式設計師的必備技能 17
感悟04 霧裡看花——程式設計師的認識誤區 18
感悟05 宏圖大業——程式設計師的生涯規劃 19
感悟06 機不可失——未來IT發展趨勢 20
第2篇 陷阱與謬誤篇
第3章 細說開發人員不可忽視的20個技術陷阱
陷阱01 脫韁之馬——IF語句的花括弧“{”和“}” 24
陷阱03 缺一不可——反序列化對象的serialVersionUID陷阱 27
陷阱04 謹言慎行——被覆蓋的父類變數 30
陷阱05 無法運行——自定義String方法導致主方法無效 33
陷阱07 控制無效——switch語句的運行控制陷阱 35
陷阱08 防不勝防——複合賦值造成精度缺失 37
陷阱09 不得不防——long型數據的隱患 39
陷阱10 永無休止——while的死循環 40
陷阱11 數值轉換——八進制數的危害 41
陷阱12 莫名其妙——Servlet的頁面轉發陷阱 41
陷阱13 深入理解——請求轉發與重定向 44
陷阱14 超出控制——Tomcat下單例模式導致的實例並不唯一 46
陷阱15 阻止失敗——錯誤阻止
瀏覽器默認行為 49
陷阱16 一無可取——操作Cookie取值錯誤陷阱 50
陷阱17 暈頭轉向——JavaScript嵌套函式指向this對象錯誤 52
陷阱18 執行緒安全——Servlet的非執行緒安全 54
陷阱19 深藏不漏——frame的多session陷阱 56
陷阱20 字元亂碼——AJAX的中文亂碼 58
第4章 細說開發人員意識中的20個常見謬誤
謬誤01 誤入歧途——所有的異常都要使用try catch語句捕獲 60
謬誤02
想入非非——所有資源都由垃圾回收器回收 61
謬誤04 並非如此——類中不能創建私有構造方法 63
謬誤05 小心為妙——split()方法可分隔所有字元串 64
謬誤06 恰恰相反——存儲數據HashMap比數組快 65
謬誤07 必由之路——try語句塊中使用return語句,finally語句塊將得不到執行 66
謬誤08 一字之差——重載方法就是重寫方法 67
謬誤09 相差甚遠——存儲相同數據一維、二維數組占記憶體基本相同 69
謬誤10 不知其二——泛型在不被指定的情況下是不確定的類型 71
謬誤11 惡意猜測——多個執行緒同時調用靜態方法影響運行結果 72
謬誤12 不知其二——字元串是值類型 73
謬誤13 易於理解——算法應越簡單越好 74
謬誤14 相差甚遠——String與StringBuffer基本上相同 75
謬誤15 誤入歧途——JAVA中沒有全局變數 77
謬誤16 恰恰相反——頻繁查詢數組比HashMap快 78
謬誤17 並非如此——DOM屬性與元素屬性是相同的 80
謬誤18 片面之詞——所有業務邏輯都應由程式實現 80
謬誤19 並非如此——JavaScript沒有私有變數與共有變數之分 81
謬誤20 並非如此——JavaScript是順序解析的 82
第3篇 技術細節篇
細節01 舉足輕重——Java類的對象 87
細節02 子承父業——Java的繼承 88
細節03 多歧亡羊——Java的多態性 90
細節04 以簡馭繁——Java的接口 92
細節05 分毫析厘——Java的變數與常量的區別 93
細節06 變幻無常——Java的拆箱與封箱機制 95
細節07 減少開銷——Java變數的使用原則 98
細節08 開枝散葉——DOM分層結構 99
細節10 初識JSP——JSP技術特徵 101
細節11 追根溯源——JSP處理過程 103
細節12 有備無患——JSP的3種注釋 104
細節13 異曲同工——include指令與<jsp:include>的區別 106
細節14 雀小髒全——JavaBean的形式和要素 108
細節15 二分明月——JavaBean的種類 110
細節16 精益求精——JavaBean的設計原則 110
細節17 究根問底——JavaBean的作用域 112
細節18 一探究竟——JavaBean的屬性 113
細節19 生老病死——Servlet的生命周期 116
細節20 繁枝末節——Servlet的代碼結構 117
細節21 守望相助——Servlet上下文監聽 118
細節22 忠誠衛士——Servlet過濾器原理 119
細節23 過化存神——Servlet過濾器的配置 120
細節24 井井有條——XML文檔結構 121
細節25 渾然一體——XML規範中的
字元集 123
細節26 循規蹈矩——DTD文檔類型定義 124
細節28 鐘靈毓秀——Tag接口解析 129
細節29 安全至上——JavaScript的同源策略 131
細節31 量才錄用——DOM核心接口 133
細節32 借花獻佛——限制Cookie在特定的域 135
細節33 計功補過——日誌記錄器Logger 137
細節35 有條不紊——Resultset結構特點 139
細節36 承前啟後——連線池技術 140
細節37 兵多將廣——JDBC的驅動類型 142
細節38 按部就班——JDBC數據持久化流程 144
細節39 老當益壯——Model1開發模式 146
細節40 分守要津——Model2開發模式 147
細節41 守正不撓——正則表達式 149
細節42
門當戶對——正則表達式模式匹配符 150
細節43 信而有徵——RegExp對象的屬性 152
細節44 規矩準繩——JavaScript數據類型轉換規則 153
細節45
隨遇而安——JavaScript函式變數作用域 154
細節46 井然有序——HTML文檔的基本結構 154
細節50 消除隱患——Internet Explorer安全區域 158
第6章 細說Java Web主流框架技術細節30例
細節01 深入剖析——Spring框架的組成模組 160
細節02 反經行權——Spring的IoC 161
細節03 切中時弊——Spring的AOP 162
細節04 淺嘗輒止——AOP中的術語 164
細節05 生生不息——容器中JavaBean生命周期 166
細節06 因時制宜——Spring的控制器 167
細節07 輕車簡從——Spring中DAO框架 169
細節08 防患未然——Spring的事務管理器 171
細節09 觸景生情——Spring視圖解析器 173
細節10 惺惺相惜——容器與JavaBean的耦合 174
細節11 五子登科——Hibernate的核心接口 175
細節12 觸類旁通——Hibernate命名策略的運用 176
細節13 變幻莫測——持久化實例的3種狀態 179
細節15 尋枝摘葉——HQL檢索技術 181
細節16 重中之重——Struts1.X的MVC設計模式 185
細節17 按部就班——Struts1.X的工作流程 186
細節18 強弓勁弩——Struts1.X中的主要控制器 187
細節19 應時對景——Struts1.X中的視圖 191
細節20 從容應對——Validator框架和Actionform 192
細節21 標新立異——Struts2.X的體系結構 193
細節22 舉重若輕——Struts2.X的ACTION對象 195
細節23 駕輕就熟——Struts2.X的ACTION基本流程 196
細節24 不法常可——Struts2.X的常量配置 197
細節25 不可多得——Struts2.X結果映射的類型 198
細節26 神兵利器——Struts2.X的OGNL 199
細節27 神通廣大——Struts2.X攔截器 201
細節28 變化無窮——Struts2.X攔截器棧配置 203
細節29 順藤摸瓜——Struts2.X資源檔案載入順序 204
細節30 規矩準繩——Struts2.X驗證檔案命名規則 205
第7章 細說Java Web其他套用技術細節20例
細節01 煥然一新——AJAX的開發模式 208
細節02 AJAX靈魂——XMLHttpRequest對象 209
細節03 小心謹慎——AJAX開發注意的問題 211
細節04 按部就班——AJAX傳送請求步驟 212
細節05 有求必應——AJAX處理伺服器回響 214
細節06 避實就虛——資料庫的視圖 215
細節07 靈活多變——創建存儲過程的方法 217
細節08 迫不得已——資料庫的觸發器 220
細節09 通風報信——郵件傳輸相關協定 222
細節10 知錯改錯——指令標識的語法錯誤 223
細節11 知錯改錯——動作標識的語法錯誤 225
細節13 遁入空門——程式的空指針錯誤 231
細節14 解析XML——JDOM介紹 232
細節15 深入細節——JDOM的數據類型 233
細節16 解析XML——SAX和DOM比較 235
細節17 駕輕就熟——SAX的常用接口 236
細節18 電子信使——Java Mail的關鍵類解析 237
細節19 炫目多彩——網頁基本配色原則 242
細節20 井井有條——頁面布局方式 243
第4篇 編程技巧篇
第8章 細說Java Web基礎技巧70例
技巧01 精確操作——防止重複提交表單 248
技巧02 友好提示——JSP自定義錯誤頁面 249
技巧03 杜絕快取——JSP禁用頁面快取 250
技巧04 刪除快取——JSP刪除指定Cookie 250
技巧05 傳送圖片——通過JSP傳送動態圖像 251
技巧06 遍歷數組——JSP的for/in循環 253
技巧07 日期處理——JSP字元串日期轉換 253
技巧08 路標指示——JSP相對路徑設定 254
技巧09 遍歷檔案——JSP遍歷指定目錄下的檔案 255
技巧10 火眼金睛——JSP查看文檔是否存在 256
技巧11 數字處理——JSP正常本地格式化輸出 256
技巧12 位數控制——JSP控制整數小數輸出位數 257
技巧13 百分數處理——JSP數字百分比輸出 257
技巧14 貨幣處理——JSP貨幣值輸出 258
技巧16 執行緒安全——編寫執行緒安全的JSP程式 259
技巧17 動作指令——JSP包含動態檔案 260
技巧18 固定不變——CSS的絕對定位方法 261
技巧19 頁面居中——CSS垂直居中方法 262
技巧20
圖文混排——CSS實現的圖文混排 263
技巧21 唯讀文本框——設定文本框為唯讀屬性 263
技巧22 限制輸入——限制編輯框輸入文本的長度 264
技巧23 格式轉換——將數據轉換為JSON格式 265
技巧24 批量操作——實現複選框的全選和反選 266
技巧25 數字格式化——將數字格式化指定位數 267
技巧26 正則表達式——驗證二進制數 268
技巧27 輸出HTML——生成版權資訊 269
技巧28 Tomcat技巧——修改連線埠號方法 269
技巧29 Tomcat技巧——常用最佳化技巧 270
技巧30 Tomcat技巧——清除Tomcat頁面快取 271
技巧31 Tomcat技巧——限制特定IP訪問 271
技巧33 Tomcat技巧——配置DBCP連線池 272
技巧34 Tomcat技巧——設定默認執行頁面 273
技巧35 預先查看——實現圖片上傳預覽功能 273
技巧36 開發技巧——Eclipse自定義選單項 274
技巧37 開發技巧——Eclipse使用中文JavaAPI 274
技巧38 iframe技巧——在父
窗體中訪問子窗體 275
技巧39 iframe技巧——iframe自適應高度 275
技巧40 Servlet技巧——利用Servlet導出Excel 276
技巧41 Servlet技巧——精簡web.xml的內容 277
技巧42 Servlet技巧——改變JSP檔案後綴 278
技巧44 Servlet技巧——顯示出錯信息技巧 280
技巧45 Servlet技巧——使用過濾器防止頁面快取 280
技巧46 Servlet技巧——同時支持兩種請求協定 281
技巧47
系統日誌——利用Log4j記錄系統活動 282
技巧48 遍歷Map——利用JSTL遍歷Map 282
技巧49 自動編號——利用JSTL為信息列表編號 283
技巧50 動態表格——JavaScript實現的動態表格 284
技巧51 JavaScript技巧——
面向對象的定義方法 284
技巧52 JavaScript技巧——利用split()截取字元串 286
技巧53 JavaScript技巧——實時顯示系統時間 286
技巧54 JavaScript技巧——去除字元串中的空格 287
技巧55 JavaScript技巧——阻止事件冒泡傳遞 288
技巧56 JavaScript技巧——生成隨機字元串 289
技巧57 JavaScript技巧——控制表單提交和重置 290
技巧58 JavaScript技巧——表單驗證 290
技巧59 JavaScript技巧——容錯處理 291
技巧60 JavaScript技巧——代碼調試 291
技巧61 JavaScript技巧——對象直接量創建對象 292
技巧62 性能最佳化——JavaScript性能最佳化 293
技巧63 限制訪問——WEB-INF資料夾保護頁面 293
技巧64 限制訪問——web.xml保護頁面 294
技巧65 限制訪問——在Web.xml中配置過濾保護 294
技巧66 報表列印——利用WebBrowser列印 295
技巧67 長度獲取——JSTL獲取List長度 296
技巧68 時間顯示——利用JSTL顯示系統時間 296
技巧69 資源回收——DBCP自動回收資料庫資源 297
技巧70 性能最佳化——JavaBean性能最佳化 297
第9章 細說Java Web主流框架技巧40例
技巧01 Spring技巧——分散配置 300
技巧02 Spring技巧——操作properties屬性檔案 300
技巧03 Spring技巧——簡化格式配置XML 301
技巧04 Spring技巧——監聽器自動載入配置檔案 302
技巧05 Spring技巧——Servlet自動載入配置檔案 302
技巧06 Spring技巧——映射所有hbm.xml檔案 303
技巧07 Spring技巧——配置Log4j日誌 303
技巧08 Spring技巧——復用Bean定義 304
技巧09 Spring技巧——用type匹配構造函式參數 305
技巧10 Spring技巧——中文亂碼處理 306
技巧11 Spring技巧——容器後處理方法 306
技巧12 Spring技巧——獲取BeanFactory容器引用 307
技巧13 Spring技巧——匿名內部JavaBean創建 308
技巧14 Spring技巧——定製屬性編輯器 308
技巧15 Spring技巧——定時執行任務 310
技巧16 Hibernate技巧——創建安全的Session 311
技巧17 Hibernate技巧——HQL模糊查詢 313
技巧18 Hibernate技巧——HQL分批檢索對象 313
技巧19 Hibernate技巧——HQL對結果進行排序 313
技巧20 Hibernate技巧——HQL屬性查詢 314
技巧21 Hibernate技巧——QBC限定條件查詢 315
技巧22 Hibernate技巧——QBC分組與統計 315
技巧23 Hibernate技巧——最佳化批量增刪改操作 316
技巧24 Hibernate技巧——充分運用檢索策略 317
技巧25 Hibernate技巧——對關聯對象進行過濾 318
技巧26 Struts1.X技巧——資源檔案的綁定 318
技巧27 Struts1.X技巧——訪問其他模組 318
技巧28 Struts1.X技巧——防止重複提交 319
技巧29 Struts1.X技巧——實現跨頁表單 321
技巧30 Struts1.X技巧——驗證框架使用JavaScript 322
技巧31 Struts2.X技巧——包含配置 322
技巧32 Struts2.X技巧——手動驗證 323
技巧33 Struts2.X技巧——通配符配置Action 324
技巧34 Struts2.X技巧——提交按鈕的特殊設定 325
技巧35 Struts2.X技巧——帶參數的攔截器 325
技巧36 Struts2.X技巧——配置檔案中定義變數 327
技巧37 Struts2.X技巧——防止重複提交 328
技巧38 Struts2.X技巧——輸出樹控制項 329
技巧39 Struts2.X技巧——將字元串轉換為List 330
技巧40 Struts2.X技巧——連線多個List 330
第10章 細說Java Web其他套用技巧30例
技巧01 jQuery技巧——隔行換色表格 333
技巧02 jQuery技巧——解決類庫的衝突問題 333
技巧03 jQuery技巧——DOM對象與jQuery對象的轉換 334
技巧04 jQuery技巧——擴展jQuery功能 334
技巧05 jQuery技巧——為動態創建元素綁定事件 335
技巧06 jQuery技巧——序列化對象 335
技巧07 jQuery技巧——頁面載入回響事件 336
技巧08 jQuery技巧——模擬用戶操作 336
技巧09 jQuery技巧——輸入框文字的消失 337
技巧10 jQeury技巧——事件委派 338
技巧11 安全技術——禁止複製網頁 339
技巧12 安全技術——防止網頁另外儲存為 339
技巧13 安全技術——禁止滑鼠右鍵 340
技巧14 安全技術——防止頁面盜鏈 341
技巧15 安全技術——禁止IE主選單 341
技巧16 SQL語句技巧——按月查詢數據 342
技巧17 SQL語句技巧——日期型數據模糊查詢 343
技巧18 SQL語句技巧——不顯示重複記錄 344
技巧19 SQL語句技巧——查詢重複記錄和記錄數 345
技巧20 SQL語句技巧——使用表的別名 346
技巧21 SQL語句技巧——用子查詢做派生的表 347
技巧22 SQL語句技巧——用子查詢做表達式 348
技巧23 SQL語句技巧——自連線查詢 348
技巧24 SQL語句技巧——查詢反向的數據 349
技巧25 SQL語句技巧——嵌套查詢 350
技巧26 Eclipse技巧——高級調試技術 351
技巧27 Eclipse技巧——
單步調試程式 355
技巧28 Eclipse技巧——從CVS資源庫檢出項目和模組 358
技巧29 Eclipse技巧——JUnit的設定 359
技巧30 Eclipse技巧——啟用和禁用
斷點 361
第5篇 算法和效率篇
第11章 細說Java Web常用算法20例
算法01 單線聯繫——單向鍊表算法 364
算法02 雙線聯繫——雙向鍊表算法 367
算法03 先進後出——堆疊 371
算法04 前出後進——佇列 378
算法05 層層相連——樹 381
算法06 步步為營——起泡排序 387
算法07 只要最小——選擇排序 390
算法08 見縫插針——插入排序 394
算法09 分分合合——歸併排序 397
算法10 算法套用——MD5加密 399
算法11 算法套用——SHA加密 406
算法12 算法套用——百錢買百雞 407
算法13 算法套用——韓信點兵 408
算法15 算法套用——水仙花數 410
算法16 從頭開始——順序查找 411
算法17 中間的選擇——二分查找 415
算法18 趨近理想的查找——散列技術 416
算法19 算法套用——素數 420
算法20 算法套用——漢諾塔 421
第6篇 解決方案篇
第12章 細說Java Web技術解決方案20例
方案01 程式最佳化——JSP與JavaBean最佳化 425
方案02 程式最佳化——Hibernate持久層的最佳化 430
方案03 程式最佳化——資料庫最佳化 438
方案04 資料庫操作——資料庫的
備份與還原 440
方案05 資料庫操作——利用視圖進行查詢 446
方案06 資料庫操作——利用存儲過程進行查詢 449
方案07 程式安全——檔案上傳安全 453
方案08 程式安全——程式執行緒安全 457
方案09 報表列印——列印Word報表 461
方案10 報表列印——列印Excel報表 465
方案11 報表列印——列印分組報表 469
方案12 安全策略——用戶登錄 473
方案13 安全策略——系統日誌記錄 477
方案15 網路通信——接收E-mail 484
方案17 頁面設計——導航條 495
方案18 頁面設計——DIV+CSS布局的實現 500
方案19 頁面設計——多媒體套用 506