前言
計算機軟體技術的日新月異推動了
社會信息化的進程,這也使得開發人員不得不學習新的技術以適應這種局面。在Web套用領域,動態網頁技術作為Web系統開發的核心,越來越受到業內人士的青睞。目前主流的
動態網頁技術主要是指ASP、
PHP和JSP,本書全面講述JSP技術及其相關技術,如與Struts、Hiberante和
Spring的集成等。
考慮到Java Web套用開發的知識和技能需要和讀者的知識結構,本書將JSP基礎知識和Java Web套用開發經驗融為一體。內容上做到全面而深入,囊括JSP技術的核心和精髓,以及Java Web套用開發整體解決方案知識。通過由淺入深,實例舉證的分析講解,使得讀者在了解JSP基礎知識的同時,具備全面的Java Web套用系統開發知識。
本書主要分3個部分介紹JSP技術及與其他相關技術集成的知識。
讀者在閱讀和學習本書介紹的技術和實踐案例時,按照章節順序閱讀可以達到最佳效果。
本書由唐友國和湛紅波主編,在編寫過程中,溫才燚、李振捷、楊志、
李新峰、鄧少峰、宗傑、劉冉、張英男、柯華坤和管西京等提供了很大的幫助。在此,對他們表示衷心的感謝。
編者
2008年6月
目錄
第1篇 基礎篇
第1章 JSP開發基礎 1
1.1 JSP的概念和作用 1
1.1.1 什麼是JSP 1
1.1.3 JSP和其他框架的集成 3
1.1.4 學習JSP網站編程 7
1.2 安裝和配置JDK 8
1.2.1 安裝JDK 8
1.2.2 配置JDK 11
1.3 安裝和配置Tomcat 12
1.3.2 測試安裝是否成功 15
1.4 開發第1個JSP頁面 16
1.4.1 創建Form提交表單 16
1.4.2 創建表單處理Servlet 16
1.4.3 創建JSP顯示頁面 17
1.4.4 部署第1個Web套用 18
1.5 小結 19
第2章 JSP 基本語法 20
2.1 JSP基礎 20
2.1.2 典型的JSP檔案 24
2.1.3 JSP檔案組成結構 25
2.1.4 JSP的生命周期 27
2.2 JSP頁面元素 28
2.2.1 頁面指令元素 29
2.2.2 腳本元素 37
2.2.3 動作元素 38
2.3 JSP內建對象 45
2.3.1 輸出對象out 46
2.3.2 請求對象request 47
2.3.3 回響對象response 50
2.3.4 會話對象session 52
2.3.5 頁面
上下文對象pageContext 55
2.3.6 全局對象application 56
2.3.7 Servlet初始化參數對象config 57
2.3.8 頁面對象page 58
2.4 使用JSP實現簡單登錄實例 59
2.4.2 使用Request獲得數據 60
2.4.3 處理表單數據 61
2.5 小結 63
第3章 Servlet 基礎 64
3.1 Servlet概念 64
3.1.1 什麼是Servlet 64
3.1.2 Servlet技術的特點 65
3.1.3 Servlet的生命周期 66
3.1.4 開發並部署一個簡單的Servlet 68
3.2.1 init方法 70
3.2.2 service方法 72
3.2.3 doGet、doPost和doXxx方法 72
3.2.4 destroy方法 75
3.3 Servlet的基本配置 77
3.3.1 Servlet的名稱及路徑配置 79
3.3.2 初始化參數 80
3.3.4 Servlet映射 81
3.4 Servlet請求和回響 83
3.4.1 Request實現請求 83
3.4.2 Response處理回響 90
3.5 Servlet請求轉發 96
3.5.1 使用sendRedirect轉發 96
3.5.2 使用Dispatch轉發 98
3.5.3 Redirect和Request Dispatch的區別 104
3.6.1 在Servlet中獲得數據 105
3.6.2 使用Servlet將用戶轉向到指定頁面 107
3.6.3 在Servlet中使用Session 108
3.7 小結 109
第4章 JSP和Servlet的集成 110
4.1 JSP和Servlet結合的兩種模式 110
4.1.1 模式一 110
4.1.2 模式二 113
4.1.3 兩種模式的比較 117
4.1.4 MVC模式 117
4.2.1 JSP實現表現層 120
4.2.2 JavaBean模型層 121
4.2.3 Servlet控制層Control 123
4.3 小結 124
第5章 JDBC資料庫訪問技術 125
5.1 JDBC和驅動程式 125
5.1.1 為什麼需要JDBC 126
5.1.2 資料庫驅動程式 126
5.2 JDBC處理資料庫方法 129
5.2.1 載入並註冊資料庫驅動 129
5.2.2 建立到資料庫的連線 130
5.2.3 訪問資料庫 131
5.2.4 Statement和PreparedStatement 133
5.3 連線不同的資料庫 145
5.4.1 二進制檔案的存取過程 147
5.4.2 在資料庫中存取圖片 148
5.5.1 在JSP頁面中查詢數據 151
5.5.3 增、刪及改數據 161
5.6 使用JDBC改進用戶登錄模組 167
5.6.1 在JSP中訪問資料庫 167
5.6.3 在JavaBean中訪問資料庫 170
5.7 小結 172
第6章 JSP常用技巧 173
6.1 會話跟蹤技巧 173
6.2.1 使用Java static屬性 179
6.2.2 基於session會話 181
6.2.3 基於Web範圍 182
6.3 錯誤處理技巧 185
6.3.1 JSP錯誤的常見類型 185
6.3.2 定向錯誤到友好頁面 186
6.3.4 在JSP頁面中處理錯誤 189
6.4 JSP檔案上傳技巧 190
6.4.1 使用JSP SmartUpload上傳 190
6.4.2 SmartUpload檔案上傳實例 193
6.5 在JSP中使用JavaBean 196
6.5.1 使用JavaBean的原因 196
6.5.2 JavaBean的基本概念 196
6.5.3 在JSP中使用JavaBean 198
6.5.4 訪問JavaBean屬性 200
6.5.5 設定JavaBean屬性 201
6.6 小結 202
第7章 JSP中常見問題及其處理 203
7.1.1 出現中文亂碼的原因 204
7.1.2 JSP顯示中文亂碼處理 205
7.1.3 JSP頁面傳遞中文亂碼處理 206
7.1.4 Servlet接收參數中文亂碼處理 208
7.1.5 URL參數中文亂碼處理 209
7.1.6 資料庫中文亂碼處理 210
7.2 資料庫處理問題 211
7.2.1 找不到資料庫驅動Driver 212
7.2.2 無法連線資料庫 212
7.2.3 資料庫連線執行緒不足的問題 213
7.2.4 資料庫查詢性能差的問題 215
7.3 國際化問題 219
7.3.1 在JSP中實現國際化 219
7.3.2 時間格式的國際化 222
7.3.3 語言國際化 225
7.4 JSP安全問題 227
7.4.2 JSP中使用認證授權 229
7.5 小結 235
第8章 在Eclipse中開發JSP和Servlet 236
8.1 MyEclipse的下載與安裝 236
8.1.1 安裝Eclipse 237
8.1.2 安裝Eclipse多國語言包 237
8.1.3 下載和安裝MyEclipse 238
8.1.4 綁定
Tomcat伺服器與My-Eclipse 241
8.1.5 在Eclipse中啟動Tomcat伺服器 241
8.2 在Eclipse中創建Web工程 242
8.2.1 新建工程嚮導 242
8.2.2 Web工程目錄結構 244
8.2.3 在Eclipse中添加類庫 245
8.3 新建JSP頁面 247
8.3.1 使用嚮導新建JSP頁面 247
8.3.2 在Eclipse中編輯JSP頁面 249
8.3.3 添加表單Form元素 251
8.4 新建Servlet 253
8.4.1 使用嚮導新建Servlet 253
8.4.3 編寫處理代碼 256
8.5 連線資料庫 257
8.5.2 建立資料庫表 258
8.5.3 新建連線資料庫類 259
8.6 在Eclipse中調試JSP和Servlet 261
8.6.1 部署Web項目 261
8.6.2 運行JSP 263
8.6.3 在Servlet中設定斷點 263
8.6.4 在JSP中設定斷點 263
8.6.5 跟蹤監控變數 264
8.7 小結 266
第9章 表達式語言EL 267
9.1 表達式語言概述 267
9.2 語法 268
9.2.4 邏輯運算符 271
9.2.5 Empty運算符 272
9.3 隱含對象 273
9.4 命名變數 278
9.6 表達式語法實例 279
9.7 其它功能 280
9.8 小結 281
10.1 JSTL概念 282
10.1.1 JSTL概述 283
10.2一般用途的標籤 285
10.2.1 <c:out>標籤 285
10.2.2 <c:set>標籤 286
10.2.3 <c:remove>標籤 288
10.2.4 <c:catch>標籤 288
10.3 條件標籤 291
10.3.1 <c:if>標籤 291
10.3.2 <c:choose>標籤 292
10.3.3 <c:when>標籤 293
10.3.4 <c:otherwise>標籤 293
10.4 疊代標籤 294
10.4.1 <c:forEach>標籤 294
10.4.2 <c:forTokens>標籤 297
10.5 與URL有關的標籤 299
10.5.1 <c:import>標籤 299
10.5.2 <c:redirect>標籤 302
10.5.3 <c:url>標籤 303
10.5.4 <c:param>標籤 304
10.6 函式標籤 305
10.6.1 <fn:startsWith>標籤 305
10.6.2 <fn:endsWith>標籤 305
10.6.3 <fn:indexOf>標籤 306
10.6.4 <fn:replace>標籤 306
10.6.5 <fn:substring>標籤 306
10.6.6 <fn:split> 306
10.8 小結 309
第11章 定義標籤擴展 310
11.1 JSP標籤擴展 310
11.1.2 標籤類型及結構 312
11.2 自定義標籤接口 313
11.2.1 Tag接口 314
11.2.2 IteratorTag接口 315
11.2.3 BodyTag接口 316
11.2.4 SimpleTag接口 317
11.3 標籤開發實例 318
11.3.1 實現Tag接口 319
11.3.2 從TagSupport繼承 321
11.4.1 創建標籤庫描述檔案 322
11.4.2 在Web中使用標籤 324
11.5 小結 325
第2篇 擴展篇
12.1 JSP集成Struts框架 326
12.1.1 Struts體系結構 326
12.1.2 Struts的MVC模式 327
12.1.3 Struts流行的原因 329
12.1.4 在Struts中集成JSP 329
12.2 Struts核心組件 330
12.2.1 控制組件Action 330
12.2.2 模型組件 331
12.2.3 視圖組件ActionForm 335
12.3.1 Struts的標籤體系 336
12.3.2 HTML標籤庫 337
12.3.3 HTML標籤 338
12.3.4 Form標籤 340
12.4 Struts Bean標籤庫 342
12.5 Struts Logic標籤庫 344
12.6 Struts驗證Validator框架 347
12.6.1 Validator框架 347
12.6.2 安裝與配置及套用Validator框架 349
12.7 小結 351
13.1 MyEclipse對Struts的支持 352
13.1.1 檔案創建嚮導支持 353
13.1.2 struts-config.xml可視化編輯器 353
13.2 在Eclipse中創建Struts工程 355
13.2.1 新建Struts工程嚮導 355
13.2.2 Struts項目結構 356
13.2.3 Struts類的包結構 356
13.2.4 查看
web.xml和struts-config.xml檔案 357
13.3 利用嚮導創建JSP 359
13.3.1 創建JSP頁面 359
13.3.2 創建ActionForm 359
13.3.3 創建Action 362
13.3.4 創建Forward 363
13.3.5 查看Struts-config.xml檔案 364
13.4 在Eclipse中編輯JSP頁面 365
13.4.1 Struts標籤輸入支持 366
13.4.2 編寫struts-config.xml檔案 367
13.5 Struts驗證支持 367
13.5.1 添加驗證支持配置 367
13.5.2 添加頁面輸入驗證 369
13.6 在Eclipse中調試Struts 371
13.6.1 部署Struts項目 371
13.6.2 運行入口頁面 372
13.6.3 在Action中設定斷點 372
13.7 小結 374
14.1 Hibernate ORM技術 375
14.1.1 Hibernate概念和體系結構 375
14.1.2 Hibernate資料庫處理API 377
14.2 Hibernate基本配置 380
14.2.1 Hibernate的下載和安裝 380
14.2.2 Hibernate開發的基本步驟 381
14.2.3 Hibernate配置檔案 382
14.2.4 持久化類 382
14.2.5 對象/關係映射檔案 384
14.3 Hibernate基本操作 385
14.3.1 持久化對象 385
14.3.2 查詢對象 385
14.3.3 更新對象 387
14.3.4 刪除對象 388
14.3.5 Hibernate基本操作實現實例 388
14.4 Hibernate對象標識符 392
14.5 Hibernate查詢HQL語言 393
14.5.1 HQL語言特點 394
14.5.2 HQL查詢構成 394
14.6 在JSP中使用Hibernate 396
14.6.2 在JSP中使用Hibernate訪問資料庫 397
14.7 小結 402
15.1 Spring概述 403
15.1.3 Spring如何集成JSP 407
15.2 基於Spring IoC容器開發 407
15.2.1 Spring的依賴注入 407
15.2.2 Bean封裝機制 409
15.2.3 Bean的基本配置 410
15.3 Spring 集成JDBC 414
15.3.2 JDBCTemplate API技術 415
15.3.4 JDBCTemplate對JDBC的改進 420
15.3.5 JDBCTemplate與
資料庫事務管理 422
15.3.6 在JSP中使用
Spring集成JDBC 424
15.4 Spring集成Hibernate 429
15.4.2 HibernateDaoSupport支持 429
15.4.3 Hibernate SessionFactory注入 431
15.4.5 HibernateTemplate的簡捷方法 435
15.4.6 在JSP中使用
Spring集成Hibernate 435
15.5 小結 440
第16章 在Eclipse中開發Hibernate和Spring 441
16.1 在Eclipse中開發Hibernate 441
16.1.1 為已有JSP項目添加Hibernate支持 442
16.1.2 Hibernate項目結構 443
16.1.3 Hibernate類包結構 444
16.1.4 hibernate.cfg.xml檔案 445
16.2 創建映射檔案 446
16.2.1 連線到資料庫 447
16.2.3 完善Java類及映射檔案 450
16.3.1 編寫業務層及其方法 451
16.3.2 編寫DAO業務接口 452
16.3.3 編寫DAO Hibernate實現 453
16.3.4 在JSP和
Servlet中調用Hibernate 458
16.4 在Eclipse中開發Spring 461
16.4.2 Spring項目結構 462
16.4.3 Spring類包結構 462
16.4.4 applicationContext.xml檔案 463
16.5 使用Spring ORM改進Hibernate 464
16.5.1 修改Spring配置檔案 464
16.5.2 創建Hibernate sessionFactory連線 465
16.5.4 創建HibernateTemplate 467
16.6 小結 468
第3篇 實戰篇
第17章 登錄驗證模組 469
17.1 在MySQL中建立用戶信息表 469
17.1.1 確定用戶欄位 470
17.1.2 創建資料庫和用戶表 470
17.2 登錄驗證的建模分析 471
17.2.2 登錄與註冊的運行流程分析 471
17.3 創建用戶數據連線緩衝池 472
17.3.1 下載與設定數據連線緩衝池類包 472
17.3.2 創建數據連線緩衝池 473
17.3.4 配置
web.xml套用重載的DataActionServlet 476
17.4 實現用戶登錄 476
17.4.1 創建登錄視圖組件 476
17.4.2 創建登錄的控制器組件 478
17.4.3 創建模型組件 480
17.4.4 配置web.xml和struts-config.xml檔案 481
17.4.5 驗證用戶輸入數據的有效性 484
17.4.6 登錄演示 485
17.5 實現新用戶註冊 485
17.5.1 創建註冊視圖組件 486
17.5.2 創建註冊的控制器組件 487
17.5.3 創建模型組件 489
17.5.4 驗證用戶輸入數據的有效性 489
17.5.5 配置
web.xml和struts-config.xml檔案 490
17.5.6 配置資源包屬性檔案 491
17.5.7 註冊演示 492
17.6 小結 492
18.1.1 需求分析 494
18.1.2 資料庫設計 494
18.2 獲取統計數據 495
18.2.1 獲取客戶端信息 495
18.2.2 截取用戶作業系統和瀏覽器信息 497
18.2.3 保存信息到資料庫 498
18.2.4 防止重複記錄 500
18.3 顯示網站訪問計數器 502
18.3.1 顯示當前線上人數計數器 502
18.3.3 使用圖片樣式顯示計數器 504
18.4 生成統計分析結果 505
18.4.1 使用SQL命令統計分析 505
18.4.2 JFreeChart簡介 507
18.4.4 生成月流量統計柱狀圖 513
18.4.5 生成訪問時段分布統計柱狀圖 516
18.4.6 生成瀏覽器類型統計餅狀圖 518
18.4.7 生成作業系統類型統計立體餅狀圖 520
18.5 小結 523
第19章 郵件收發模組 524
19.1 郵件相關協定簡介 524
19.2 JavaMail簡介 525
19.2.2 JavaMail郵件處理過程 526
19.2.3 JavaMail常用類 526
19.2.4 一個簡單的郵件傳送程式 529
19.3 傳送HTML格式的郵件 531
19.3.1 撰寫郵件頁面 531
19.3.2 郵件傳送Servlet 532
19.3.4 處理主題與正文中的亂碼問題 535
19.4 傳送帶附屬檔案的郵件 536
19.4.1 傳送本地檔案形式的附屬檔案 537
19.4.2 傳送遠程檔案形式的附屬檔案 537
19.5 實現郵件接收 538
19.5.1 接收郵件的一般過程 538
19.6 小結 541
第20章 網頁搜尋模組 542
20.1 搜尋引擎概述 542
20.1.1 搜尋引擎分類 543
20.1.2 搜尋引擎的實現原理 545
20.1.3 搜尋引擎的相關技術 546
20.2.1 使用Google API 547
20.2.2 使用百度API 548
20.3.1 Lucene概述 550
20.3.3 Lucene類包簡介 551
20.3.4 建立索引 551
20.3.5 搜尋索引 554
20.4 構建Lucene Web搜尋程式 556
20.4.1 搜尋程式的工作流程 556
20.4.2 建立搜尋頁面 557
20.4.3 建立搜尋控制Servlet 558
20.4.4 創建索引 559
20.4.5 搜尋索引 561
20.4.6 運行程式 564
20.5 小結 565
第21章 上傳和下載模組 566
21.1 上傳和下載簡介 566
21.2 一個簡單的檔案下載程式 566
21.3.1 建立檔案上傳表單 568
21.3.2 利用Servlet實現檔案上傳 569
21.4.1 FileUpload上傳處理過程 571
21.4.2 一個簡單的檔案上傳實例 573
21.4.3 配置web.xml並運行 576
21.4.4 查看上傳進度 577
21.5 小結 578
22.1.2 總體設計 580
22.2 資料庫設計與實現 581
22.2.1 資料庫需求分析 581
22.2.3 創建數據表 583
22.3 編寫資料庫處理類 585
22.4 編寫JavaBean實現 587
22.4.1 處理管理員數據JavaBean 587
22.4.2 處理一級欄目數據JavaBean 588
22.4.3 處理二級欄目數據JavaBean 588
22.4.4 處理新聞數據JavaBean 589
22.5 設計後台頁面與功能實現 590
22.5.1 實現管理員登錄 591
22.5.2 實現一級欄目的功能 597
22.5.3 實現二級欄目的功能 604
22.5.4 實現欄目下的相關新聞功能 607
22.5.5 後台管理主頁面集成 614
22.5.6 演示後台功能 619
22.6 前台頁面設計與功能實現 624
22.6.1 主頁面設計與功能實現 624
22.6.2 新聞顯示頁面設計與功能實現 626
22.7 小結 627
第23章 線上相冊系統 628
23.1.1 系統功能描述 628
23.1.2 選擇平台與架構 629
23.2 資料庫設計與實現 629
23.3.1 DAO組件的定義 632
23.3.2 實現DAO組件 633
23.4 實現Web層 651
23.4.1 相冊管理 651
23.4.2 相冊列表 655
23.4.3 上傳相片 659
23.4.4 查看相片 664
23.4.5 管理相片 667
23.5 小結 667
24.2 資料庫設計與實現 669
24.3 設計與搭建架構 673
24.3.1 設計視圖層 674
24.3.2 設計控制層 674
24.3.3 設計對象模型 676
24.4 線上購物頁面 682
24.4.1 實現購書主頁 682
24.4.2 實現二級分類頁 685
24.4.3 實現圖書詳細頁 686
24.5 商品查詢 687
24.5.2 實現業務邏輯 688
24.5.3 實現數據訪問層 689
24.6 管理購物車 689
24.6.1 添加商品到購物車 690
24.6.2 更新圖書數量 696
24.6.3 取消購物車中的商品 699
24.7 生成訂單導航頁面 700
24.7.1 確認收貨及定貨地址 701
24.7.2 選擇送貨時間及運費 706
24.7.3 選擇包裝類型及費用 708
24.7.4 選擇付款方式 709
24.7.5 選擇缺貨處理及餘款處理方式 709
24.7.6 確認訂單 711
24.7.7 成功生成訂單 715
24.8 小結 717
序言
計算機軟體技術的日新月異推動了
社會信息化的進程,這也使得開發人員不得不學習新的技術以適應這種局面。在Web套用領域,動態網頁技術作為Web系統開發的核心,越來越受到業內人士的青睞。目前主流的
動態網頁技術主要是指ASP、
PHP和JSP,本書全面講述JSP技術及其相關技術,如Struts、Hiberante和
Spring的集成等。
考慮到Java Web套用開發的知識和技能需要和讀者的知識結構,本書將JSP基礎知識和Java Web套用開發經驗融為一體。內容上做到全面而深入,囊括JSP技術的核心和精髓,以及Java Web套用開發整體解決方案知識。通過由淺入深,實例舉證的分析講解,使得讀者在了解JSP基礎知識的同時,具備全面的Java Web套用系統開發知識。
本書主要分3個部分介紹JSP技術及與其他相關技術集成的知識。簡要介紹JSP的基本概念和開發環境的配置,並通過一個小實例使讀者對JSP開發的步驟有一定的了解。