內容簡介
本書採用“任務驅動”的編寫模式,由淺入深、循序漸進、系統地介紹了Java Web開發的相關知識。通過實際套用的案例,幫助讀者鞏固所學知識,以便更好地進行開發實踐。 全書共15章,內容涵蓋了Java Web開發基礎知識、Servlet接收GET請求數據、Servlet接收POST請求數據、Servlet生成HTTP回響數據、異步請求和異步回響、會話控制技術:Cookie與Session、過濾器Filter和監聽器Listener、MVC和JSTL、個人筆記系統的資料庫設計及實現、MySQL事務機制和JDBC的使用、layui以及CKEditor的使用,以及個人筆記系統首頁模組的設計與實現、用戶管理模組的設計與實現、筆記管理模組的實現、其他功能模組的設計與實現等知識。
圖書目錄
第1章 Java Web開發基礎知識 1
1.1 B/S概述 1
1.1.1 瀏覽器 1
1.1.2 伺服器 1
1.2 靜態代碼和動態代碼 1
1.2.1 HTML和靜態代碼 2
1.2.2 伺服器端腳本語言和動態代碼 2
1.2.3 Servlet容器和動態代碼之間的關係 3
1.2.4 Web伺服器上資源檔案的分類 3
1.3 HTTP概述 4
1.3.1 瀏覽器與Web伺服器之間的互動 4
1.3.2 HTTP的本質 5
1.3.3 HTTP請求/HTTP回響的詳細過程 5
1.4 Java Web開發環境的部署 6
1.4.1 JDK的版本選擇和安裝 6
1.4.2 Tomcat的版本選擇和安裝 6
1.4.3 啟動和停止運行Tomcat 6
1.4.4 本機的“左右互搏之術” 8
1.4.5 Tomcat連線埠占用問題 9
1.4.6 有趣的實驗 9
實踐任務 Java Web開發基礎知識 11
第2章 Servlet接收GET請求數據 19
2.1 使用Eclipse開發Java Web程式 19
2.1.1 Eclipse的安裝和啟動 19
2.1.2 啟動Eclipse的注意事項 19
2.1.3 認識Eclipse工作空間 20
2.1.4 小露身手:使用Eclipse創建動態Web項目 21
2.1.5 Eclipse的View和Perspective 23
2.1.6 小露身手:使用Eclipse創建個Servlet程式 23
2.1.7 Eclipse中Servlet的URL Mappings和Servlet的urlPatterns 27
2.1.8 Servlet程式的生命周期 27
2.1.9 小露身手:使用Eclipse創建JSP程式 29
2.2 字元編碼 30
2.2.1 JSP檔案的字元編碼與pageEncoding 30
2.2.2 MIME和字元編碼 31
2.2.3 JSP檔案、pageEncoding和charset的字元編碼之間的關係 33
2.3 URL路徑 34
2.4 過程分析:瀏覽器傳送GET請求數據和Web伺服器接收GET請求數據 35
2.4.1 過程分析:瀏覽器向Web伺服器傳送GET請求數據 35
2.4.2 GET請求數據的構成 35
2.4.3 過程分析:Web伺服器接收GET請求數據 38
2.5 request請求對象獲取GET請求數據 39
2.5.1 獲取路徑信息 40
2.5.2 獲取GET請求參數信息 40
2.5.3 獲取GET請求行信息 40
2.5.4 獲取GET請求頭信息 40
2.5.5 獲取Web伺服器主機和瀏覽器主機信息 41
2.5.6 獲取URL Mappings信息的方法 41
2.6 request請求對象的請求派發功能 41
2.6.1 RequestDispatcher 41
2.6.2 請求派發的請求轉發 42
2.6.3 請求轉發的實現 43
2.6.4 請求轉發之間Servlet程式的數據共享 43
2.6.5 request請求對象的屬性和參數區別 44
實踐任務 Servlet程式接收GET請求數據 44
第3章 Servlet接收POST請求數據 51
3.1 FORM表單 51
3.1.1 表單標籤 51
3.1.2 表單控制項 51
3.1.3 表單按鈕 54
3.1.4 小露身手:利用FORM表單模擬傳送GET請求數據 55
3.2 URL路徑定位方法 56
3.2.1 URL路徑 57
3.2.2 URL相對路徑 57
3.2.3 page-relative路徑的技巧 59
3.2.4 小露身手:URL路徑定位方法 60
3.3 過程分析:瀏覽器傳送POST請求數據和Web伺服器接收POST請求數據 62
3.3.1 準備工作 62
3.3.2 過程分析:瀏覽器向Web伺服器傳送POST請求數據 63
3.3.3 POST請求數據的構成 63
3.3.4 POST與GET請求數據對比小結 64
3.3.5 過程分析:Web伺服器接收POST請求數據 65
3.4 小露身手:request請求對象接收application/x-www-form-urlencoded格式的POST請求數據 65
3.5 小露身手:向Servlet程式添加multipart/form-data支持 70
3.5.1 application/x-www-form-urlencoded與multipart/form-data的比較 72
3.5.2 理解multipart/form-data內容格式中的片段 73
3.5.3 request請求對象獲取multipart/form-data請求體中的“片段” 74
實踐任務 Servlet接收POST請求數據 76
第4章 Servlet生成HTTP回響數據 78
4.1 HTTP回響數據與HttpServletResponse之間的關係 78
4.2 HTTP回響行 79
4.2.1 回響狀態碼 79
4.2.2 使用response回響對象設定回響狀態碼 79
4.3 HTTP回響頭列表 80
4.3.1 常見的回響頭 80
4.3.2 使用response回響對象設定、添加回響頭 82
4.3.3 重定向、定時刷新和請求轉發的比較 83
4.4 使用response回響對象生成HTTP回響體 85
4.4.1 response回響對象的快取 85
4.4.2 向response快取添加文本型數據 86
4.4.3 向response快取添加位元組數據 86
4.4.4 response回響對象“一石三鳥”的代碼 87
實踐任務 Servlet生成HTTP回響數據 88
第5章 異步請求和異步回響 99
5.1 Web前端技術 99
5.1.1 HTML簡介 99
5.1.2 HTML元素的屬性 100
5.1.3 CSS簡介 100
5.1.4 小露身手:理解CSS中層疊的含義 101
5.1.5 JavaScript簡介 102
5.2 JavaScript入門 102
5.2.1 JavaScript基礎知識 102
5.2.2 小露身手:演示HTML元素和JavaScript呈現的順序 104
5.2.3 通過JavaScript的document對象操作HTML元素 105
5.2.4 小露身手:通過JavaScript的document對象操作HTML元素內容 106
5.3 異步請求和異步回響 107
5.3.1 異步請求和同步請求概述 108
5.3.2 XMLHttpRequest異步請求對象 109
5.3.3 小露身手:了解GET異步請求和異步回響的執行流程 112
5.3.4 小露身手:使用XMLHttpRequest傳送異步的POST請求 114
5.3.5 小露身手:使用XMLHttpRequest和FormData異步上傳、顯示圖片 115
實踐任務 異步請求和異步回響 118
第6章 會話控制技術:Cookie與Session 119
6.1 會話控制技術概述 119
6.2 Cookie會話控制技術 119
6.2.1 Cookie的工作原理 119
6.2.2 Cookie的本質與核心 121
6.2.3 創建Cookie 122
6.2.4 將cookie對象添加到HTTP回響頭列表中 123
6.2.5 讀取Cookie 124
6.2.6 使Cookie手動失效 124
6.2.7 小露身手:Cookie的綜合運用 125
6.2.8 重定向和請求轉發關於Cookie使用的區別 128
6.3 Session會話控制技術 130
6.3.1 Session的工作原理 130
6.3.2 Session的本質與核心 131
6.3.3 開啟Session和獲取已有的session對象 132
6.3.4 Servlet開啟Session的區別和JSP開啟Session的區別 132
6.3.5 session對象的使用 132
6.3.6 刪除Session或者使Session失效 133
6.3.7 小露身手:Session的綜合使用 133
實踐任務 會話控制技術:Cookie與Session 145
第7章 過濾器和監聽器 146
7.1 過濾器 146
7.1.1 小露身手:創建簡單的過濾器ABCFilter 147
7.1.2 過濾器總結 149
7.1.3 小露身手:過濾器鏈的使用 150
7.1.4 過濾器的綜合套用1:URL級別的許可權訪問控制 151
7.1.5 小露身手:使用過濾器實現URL級別的許可權訪問控制 152
7.1.6 過濾器的綜合套用2:使用過濾器實現表單驗證 154
7.1.7 小露身手:使用過濾器實現表單驗證 154
7.2 監聽器 155
7.2.1 小露身手:演示Java Web狀態監聽器和屬性監聽器 156
7.2.2 小露身手:利用HttpSessionListener統計線上人數 159
實踐任務 過濾器和監聽器 160
第8章 MVC和JSTL 161
8.1 MVC 161
8.1.1 MVC的歷史與簡介 161
8.1.2 MVC與Web開發之間的關係 162
8.1.3 MVC與Java Web的關係 162
8.1.4 理解Service和DAO之間的關係 164
8.2 JavaBean 165
8.2.1 JavaBean簡介 165
8.2.2 JavaBean代碼編寫規範 165
8.2.3 JavaBean命名屬性的特殊情況 166
8.2.4 小露身手:在Eclipse中創建數據模型JavaBean和業務邏輯Service 167
8.2.5 JavaBean的分類 169
8.3 JSP的內置對象 170
8.3.1 內置對象out 170
8.3.2 內置對象application和Servlet中的ServletContext 171
8.3.3 內置對象pageContext 172
8.4 EL 172
8.4.1 EL簡介 173
8.4.2 EL的功能和優點 173
8.4.3 EL的內置對象 174
8.4.4 小露身手:EL的使用 174
8.5 JSTL 181
8.5.1 JSTL核心標籤庫的準備工作 181
8.5.2 JSTL核心標籤庫的使用 182
8.5.3 小露身手:JSTL核心標籤庫的使用 182
實踐任務 MVC和JSTL 186
第9章 個人筆記系統的資料庫設計及實現 187
9.1 資料庫概述 187
9.1.1 資料庫管理系統和資料庫 187
9.1.2 資料庫和資料庫對象 187
9.1.3 資料庫和資料庫表 188
9.1.4 SQL 188
9.1.5 重新認識資料庫表 188
9.2 個人筆記系統資料庫的設計 189
9.2.1 構建個人筆記系統的必要性 189
9.2.2 個人筆記系統的功能需求分析 189
9.2.3 E-R圖簡介 190
9.2.4 個人筆記系統E-R圖的設計 193
9.2.5 個人筆記系統的表結構設計 195
9.3 MySQL環境準備工作 196
9.3.1 MySQL的版本選擇 196
9.3.2 MySQL的安裝和配置 197
9.3.3 啟動與停止MySQL服務 197
9.3.4 打開MySQL客戶機、連線MySQL實例 198
9.4 資料庫的管理 199
9.5 表結構的管理 200
9.5.1 創建表結構的準備工作 200
9.5.2 創建表結構的SQL語句語法格式 202
9.5.3 查看錶和查看錶結構 202
9.5.4 刪除表結構 203
9.5.5 小露身手:創建個人筆記系統的資料庫和資料庫表 203
9.6 表記錄的更新 204
9.6.1 添加表記錄 205
9.6.2 修改表記錄 205
9.6.3 刪除表記錄 205
9.6.4 檢索表的所有記錄 205
9.6.5 小露身手:向個人筆記系統的資料庫添加測試數據 206
9.6.6 小露身手:更新表記錄時,不能違反表之間的外鍵約束條件 207
9.7 表記錄的檢索 208
9.7.1 使用select子句指定欄位列表 208
9.7.2 distinct和limit 208
9.7.3 表和表之間的連線 209
9.7.4 使用where子句過濾結果集 209
9.7.5 使用order by對結果集排序 211
9.7.6 使用聚合函式匯總結果集 211
9.7.7 使用group by子句對記錄分組統計 211
9.7.8 小露身手:個人筆記系統的綜合查詢 211
實踐任務 個人筆記系統的資料庫 設計及實現 212
第10章 MySQL事務機制和JDBC的使用 214
10.1 MySQL事務機制 214
10.1.1 個人筆記系統中事務機制的必要性 214
10.1.2 事務機制中同一個資料庫連線的必要性 215
10.1.3 事務機制中關閉資料庫連線自動提交模式的必要性 215
10.1.4 個人筆記系統的事務實現 216
10.2 JDBC概述 217
10.2.1 Java程式通過JDBC訪問資料庫的步驟 217
10.2.2 部署資料庫驅動程式 218
10.2.3 載入資料庫驅動程式 218
10.2.4 創建資料庫連線對象con 219
10.2.5 關閉con對象的自動提交模式 220
10.2.6 使用con對象準備預處理SQL語句 220
10.2.7 初始化預處理SQL語句的參數 220
10.2.8 執行預處理SQL語句 221
10.2.9 遍歷結果集 221
10.2.10 結束事務 223
10.2.11 關閉資源 223
10.2.12 獲取insert語句的自增型欄位的值 223
10.2.13 異常總結和其他建議 224
10.2.14 小露身手:使用JDBC訪問MySQL資料庫 224
10.2.15 小露身手:設計工具類DBUtil 225
10.2.16 小露身手:個人筆記系統中事務的必要性 229
10.3 基於MVC的Java Web開發中的事務管理 230
10.3.1 多個DAO共用同一個資料庫連線對象的解決方案 231
10.3.2 使用過濾器管理資料庫連線對象和事務 233
10.3.3 藉助ThreadLocal工具類共享參數 234
10.3.4 小露身手:藉助ThreadLocal工具類共享參數 234
10.3.5 小露身手:使用過濾器和Threadlocal管理事務 236
實踐任務 MySQL事務機制和JDBC的使用 240
第11章 layui和CKEditor的使用 242
11.1 layui的使用 242
11.1.1 小露身手:快速上手layui 243
11.1.2 小露身手:layui中的頁面元素 247
11.1.3 layui的柵格布局 251
11.1.4 小露身手:layui中常用的容器 252
11.1.5 小露身手:layui中常用的內置JavaScript模組 256
11.1.6 layui知識補充 258
11.1.7 小露身手:layui補充知識 258
11.2 CKEditor 5的使用 263
11.2.1 經典模式編輯器的下載和安裝 263
11.2.2 小露身手:CKEditor的基本使用 263
實踐任務 layui和CKEditor的使用 267
第12章 項目實訓:個人筆記系統首頁模組的設計與實現 268
12.1 個人筆記系統首頁模組的設計與分析 268
12.1.1 個人筆記系統首頁模組的視圖層設計 268
12.1.2 個人筆記系統首頁模組的邏輯分析 269
12.1.3 個人筆記系統首頁模組的數據分析 270
12.2 個人筆記系統URL級別的許可權訪問控制的設計 271
12.3 個人筆記系統Java類的目錄設定 272
12.4 個人筆記系統類名和方法名的命名規則 272
12.5 個人筆記系統靜態資源檔案的目錄設定 272
實踐任務 個人筆記系統首頁模組的設計與實現 273
第13章 項目實訓:個人筆記系統用戶管理模組的設計與實現 283
13.1 用戶註冊功能的實現 283
13.2 用戶登錄和註銷功能的實現 284
實踐任務1 用戶註冊功能的實現 285
實踐任務2 用戶登錄和註銷功能的實現 293
實踐任務3 個人簡介的維護 296
實踐任務4 使用過濾器實現個人筆記系統URL級別的許可權訪問控制 300
第14章 項目實訓:個人筆記系統筆記管理模組的設計與實現 302
實踐任務1 查詢所有筆記功能的開發 302
實踐任務2 後台管理面板author.jsp程式的開發 304
實踐任務3 添加筆記頁面和保存筆記功能的開發 304
實踐任務4 查看筆記全文功能的開發 312
實踐任務5 編輯筆記和更新筆記功能的開發 318
實踐任務6 刪除筆記功能的開發 322
實踐任務7 對筆記的標題和內容進行模糊查詢功能的開發 323
第15章 項目實訓:個人筆記系統其他功能模組的設計與實現 325
實踐任務1 對筆記發表評論功能的開發 325
實踐任務2 查看某個用戶發表的評論功能的開發 327
實踐任務3 筆記類別名稱管理模組的開發 329
實踐任務4 筆記標籤名稱管理模組的開發 332
實踐任務5 向首頁添加layui固定塊 335
附錄 337