Java Web 實操:基於 IntelliJ IDEA、JDBC、Servlet、Ajax、Nexus、Maven
內容描述
本書主要包括IntelliJ IDEA,JDBC,Servlet,Vue四部分內容,
這四部分是學習Java Web開發的重點。
在IntelliJ IDEA部分介紹了40多種使用技巧,還介紹了IntelliJ IDEA的核心技能,
包括調試Java項目,創建Java/Web/JavaMaven/WebMaven項目等。
JDBC部分介紹如何處理海量數據的查詢與添加操作,常見JDBC接口的使用等功能。
Servlet部分介紹了request-response請求響應模型原理,接口Servlet,ServletConfig的使用,
web.xml中常見的配置,HttpServletRequest和HttpServletResponse接口的使用等核心技術的使用。
Vue章節介紹了模板語法、計算屬性和偵聽器、Class和Style操作、
條件渲染、列表渲染、事件處理、等核心技能。
後以購物車的案例將所有知識點串聯,達到綜合演練的目的。
目錄大綱
目錄
第1 章 IntelliJ IDEA 常用技巧 1
1.1 初次配置IntelliJ IDEA 2
1.2 創建Java 項目 4
1.2.1 關聯JDK 並創建Java 項目 4
1.2.2 查看項目結構 6
1.2.3 創建Java 類 6
1.2.4 運行Java 類 7
1.3 IntelliJ IDEA 相關配置與使用技巧 7
1.3.1 配置界麵皮膚 8
1.3.2 設置Eclipse 風格的快捷鍵 8
1.3.3 更改代碼編輯器文字大小 8
1.3.4 快速生成代碼 8
1.3.5 設置快捷鍵“Alt+/” 9
1.3.6 設置代碼完成對大小寫不敏感 10
1.3.7 配置JDK 11
1.3.8 設置自動編譯 13
1.3.9 拋出異常 13
1.3.10 使用“Ctrl+Alt+T”快捷鍵生成代碼塊 13
1.3.11 使用Generate 菜單生成方法 14
1.3.12 使用fori 生成for 語句 16
1.3.13 實現自動導入的功能 16
1.3.14 實現水平或垂直分屏的功能 16
1.3.15 樹形顯示包結構 17
1.3.16 設置“F2”鍵用於改名 18
1.3.17 將類的方法抽取成接口 18
1.3.18 Maven 項目下載源代碼和幫助文檔 19
1.3.19 Find Usages 菜單查看方法調用 20
1.3.20 增加控制台保存輸出信息的緩衝區大小 20
1.3.21 增加可用內存 21
1.3.22 啟用Toolbar 21
1.3.23 顯示方法分割符 21
1.3.24 設置文件編碼 22
1.3.25 使用快捷鍵找到對應的功能名稱 24
1.3.26 使用快捷鍵自動生成返回值或聲明變量 24
1.3.27 使用快捷鍵實現代碼導航 24
1.3.28 使用“F4”鍵查看類繼承結構 24
1.3.29 使用快捷鍵查看類大綱結構 24
1.3.30 使用快捷鍵搜索與替換文本功能 25
1.3.31 使用“Ctrl+H”快捷鍵實現查詢更大範圍的功能 25
1.3.32 使用“Shift”鍵實現全局搜索 26
1.3.33 生成UML 類圖 27
1.3.34 使用快捷鍵查看方法的重寫或實現 28
1.3.35 使用快捷鍵查看文件 28
1.3.36 生成.jar 文件 29
1.3.37 設置顯示API 文檔提示框的延遲時間 31
1.3.38 使用多行Tab 顯示 32
1.3.39 設置背景圖片 32
1.3.40 自動生成serialVersionUID 屬性 33
1.3.41 查看當前文件的位置 33
1.3.42 禁用toString()方法查看對象內容 34
1.3.43 設置註釋不在前面 35
1.3.44 連接數據庫的配置 36
1.3.45 實現在控制臺中進行查詢 39
1.3.46 獲取完整的包類路徑 39
1.3.47 導入/導出IntelliJ IDEA 的配置 40
1.3.48 使用Toolbox App 管理IntelliJ IDEA 40
1.3.49 還原默認界面佈局 41
1.3.50 使用內置控制台 41
1.3.51 查看參數信息 42
第2 章 IntelliJ IDEA 核心技能 43
2.1 調試Java 代碼 43
2.1.1 準備調試代碼 43
2.1.2 設置斷點 44
2.1.3 調試 44
2.1.4 跟蹤按鈕解釋 44
2.1.5 更改“force step into”按鈕快捷鍵 44
2.1.6 查看所有斷點 45
2.1.7 設置條件斷點 46
2.1.8 正確終止進程 46
2.1.9 設置運行到光標處暫停 47
2.1.10 顯示完整包路徑 47
2.2 為Java 項目引用jar 包文件 48
2.2.1 使用Global Libraries 引用jar 包文件 48
2.2.2 使用Libraries 引用jar 包文件 52
2.2.3 使用Add as Library 引用jar 包文件 54
2.3 對Java 項目導出的.jar 文件實現轉換 56
2.4 創建Web 項目 57
2.4.1 創建Java 項目並配置Web 環境 57
2.4.2 使用嚮導創建Servlet 59
2.4.3 添加與Servlet 相關的.jar 文件依賴 59
2.4.4 完善Servlet 代碼 59
2.4.5 創建test1.jsp 文件 60
2.4.6 關聯Tomcat 60
2.4.7 運行項目並解決Tomcat 啟動亂碼 62
2.4.8 實現熱部署 63
2.4.9 上傳文件路徑的小提示 64
2.4.10 禁止啟動Tomcat 完成後彈出網頁 64
2.4.11 設置.html 文件自動縮進 64
2.4.12 導出war 包文件 65
2.5 創建Maven Web 項目 66
2.5.1 搭建Maven 環境 67
2.5.2 創建Maven Web 項目 69
2.5.3 改變JDK 版本 71
2.5.4 創建java 和resource 文件夾 71
2.5.5 其他方式創建java 和resources 文件夾 72
2.5.6 創建Servlet 類 73
2.5.7 創建JSP 文件 74
2.5.8 啟動項目並解決Servlet 打印亂碼的問題 75
2.5.9 解決EL 表達式無效的問題 75
2.5.10 導出war 包文件 76
2.6 創建Maven Java 項目並導出.jar 文件 77
2.6.1 創建Maven Java 項目 77
2.6.2 編輯pom.xml 文件 79
2.6.3 創建運行類 79
2.6.4 執行運行類 80
2.6.5 打包並在CMD 中運行類 80
2.7 配置全局Maven 81
2.8 多Modules 模塊Web 環境的搭建—非Maven 環境 82
2.8.1 創建父項目 82
2.8.2 創建DAO 子模塊 83
2.8.3 創建Service 子模塊 84
2.8.4 創建Web 子模塊 84
2.8.5 在DAO 模塊中創建實體類及DAO 類 85
2.8.6 在Service 模塊中引用DAO 模塊 86
2.8.7 創建Global Libraries 全局庫 88
2.8.8 在Web 模塊中創建Servlet 88
2.8.9 創建JSP 視圖 89
2.8.10 啟動Tomcat 並解決類找不到的異常 90
2.8.11 導出.war 文件 91
2.9 多Modules 模塊Web 環境的搭建—Maven 環境 92
2.9.1 創建父項目 92
2.9.2 創建DAO 子模塊 92
2.9.3 創建Service 子模塊和Web 子模塊 93
2.9.4 給DAO 模塊中的pom.xml 文件添加依賴 95
2.9.5 在DAO 模塊中創建DAO 類 95
2.9.6 在Service 模塊中創建業務類並引用DAO 模塊 95
2.9.7 在Web 模塊中配置Sources Root 文件夾 96
2.9.8 給Web 模塊中的pom.xml 文件添加依賴 96
2.9.9 創建Servlet 96
2.9.10 運行項目 97
2.9.11 導出.war 文件 97
2.10 多Web Modules 模塊環境的搭建—非Maven 環境 98
2.10.1 創建Empty Project 98
2.10.2 創建Web 模塊 98
2.10.3 創建Servlet 99
2.10.4 配置Tomcat 99
2.10.5 啟動Tomcat 103
2.10.6 導出.war 文件 103
第3 章 JDBC 核心技術 104
3.1 什麼是JDBC 104
3.2 為什麼要使用JDBC 104
3.3 什麼是JDBC 驅動 106
3.4 JDBC 核心接口介紹 107
3.4.1 Driver 107
3.4.2 Connection 109
3.4.3 Statement 110
3.4.4 ResultSet 111
3.4.5 PreparedStatement 113
3.5 創建Driver 對象 114
3.6 創建Connection 對象 114
3.7 創建Statement 對象 115
3.8 創建ResultSet 對象 116
3.9 使用Statement 接口有損軟件的安全性 117
3.10 創建PreparedStatement 接口 119
3.11 PreparedStatement 的預編譯特性 122
3.12 PreparedStatement 執行效率高 123
3.13 不同方式註冊驅動的比較 125
3.13.1 方法1 125
3.13.2 方法2 125
3.13.3 方法3 126
3.13.4 讀懂源代碼的基本知識 126
3.13.5 針對MySQL 驅動源碼分析 127
3.13.6 針對Oracle 驅動源碼分析 129
3.13.7 方法3 的原理 130
3.13.8 三種方法的使用場景 132
3.14 使用PreparedStatement 實現記錄的增刪改 133
3.15 建議釋放資源放入finally 塊 136
3.16 實現Connection 工廠類 142
3.17 多條件查詢 145
3.18 DTO、ENTITY 和DAO 介紹 147
3.19 將JDBC 操作封裝為DAO 數據訪問對象 150
3.20 允許MySQL 被遠程訪問 156
第4 章 JDBC 實戰技術 157
4.1 元數據的獲取 157
4.2 簡化CURD 的操作代碼 161
4.3 反射與泛型結合為泛型DAO 163
4.4 數據源和連接池的使用 170
4.4.1 創建數據源接口的實現類 171
4.4.2 使用驅動提供的DataSource 接口的實現類 174
4.4.3 DataSource 接口的弊端 175
4.4.4 連接池 178
4.4.5 不使用連接池與使用連接池的比較 179
4.4.6 HikariCP 作為連接池 180
4.5 在JDBC 中處理數據庫的事務 182
4.6 多事務導致轉賬發生異常不回滾 187
4.7 使用ThreadLocal 解決問題 193
4.8 使用JDBC 操作CLOB 200
4.8.1 添加CLOB 類型的數據 200
4.8.2 獲取CLOB 字段中的數據 201
4.9 使用JDBC 操作BLOB 203
4.9.1 添加BLOB 類型的數據 203
4.9.2 獲取BLOB 字段的數據 205
4.10 實現Batch 批處理 207
4.11 插入Date 數據類型並查詢區間 210
4.12 返回新版的ID 值 212
4.13 事務的ACID 特性 214
4.14 數據庫事務的類型 215
4.15 臟讀、可重複讀、不可重複讀及幻讀的解釋 216
4.16 事務隔離級別 217
4.16.1 TRANSACTION_READ_UNCOMMITTED 217
4.16.2 TRANSACTION_READ_COMMITTED 224
4.16.3 TRANSACTION_REPEATABLE_READ 231
4.16.4 TRANSACTION_SERIALIZABLE 238
第5 章 Servlet 核心技術 245
5.1 Servlet 簡介 245
5.2 更改訪問Tomcat 的埠號 247
5.3 Servlet 技術開發 248
5.3.1 Servlet 的繼承與實現關係 249
5.3.2 創建基於xml 的Servlet 案例 251
5.3.3 正確與錯誤配置Servlet 的不同情況 254
5.3.4 創建基於註解的Servlet 案例 257
5.3.5 接口Servlet 259
5.3.6 接口ServletConfig 267
5.3.7 使用配置Servlet 275
5.3.8 使用註解實現的功能 276
5.3.9 執行doGet()方法或doPost()方法的方式 278
5.3.10 doGet()方法與doPost()方法的區別 280
5.3.11 Application context 選項的作用 282
5.3.12 HttpServletRequest 和HttpServletResponse 接口的使用 282
5.3.13 配置Servlet 具有後綴 317
5.4 請求與響應 318
5.4.1 請求/響應模型 318
5.4.2 請求與響應的數據格式 319
5.5 使用Servlet+JDBC 實現基於Web 的CURD 增刪改查 323
第6 章 Cookie 對象 340
6.1 創建Cookie 340
6.2 查詢Cookie 342
6.3 修改Cookie 343
6.4 刪除Cookie 343
6.5 設置setMaxAge()值為負數 344
6.6 使用Cookie 存儲中文或空格 344
6.7 為什麼找不到Cookie 345
6.8 創建工具類封裝Cookie 操作 346
6.9 使用Cookie 實現免登錄 348
第7 章 HttpSession 接口 351
7.1 HttpSession 接口的使用 352
7.2 HttpServletRequest 接口與HttpSession 的區別 353
7.3 Session 與Cookie 的運行機制 355
7.4 HttpSession 接口與URL 重寫 358
7.5 使用HttpSession 實現免登錄功能 363
7.6 使用HttpSession 實現簡易購物車功能 365
7.6.1 創建一個V 層 366
7.6.2 創建三個C 層 366
7.6.3 創建兩個entity 實體類 368
7.6.4 創建兩個DAO 數據訪問層 369
7.6.5 創建三個Model 業務邏輯層 370
第8 章 ServletContext 接口 372
8.1 session 中的數據是私有的 373
8.2 ServletContext 中的數據是公共的 374
8.3 ServletConfig.getInitParameter()方法的弊端 375
8.4 使用ServletContext.getInitParameter()方法解決問題 377
8.5 實現charset 編碼可配置 379
8.6 使用getRealPath("/")方法獲取項目的運行路徑 380
第9 章 Filter 接口 381
9.1 Filter 的使用 382
9.2 Filter 的生命週期 385
9.3 獲取私有/公共init 初始化參數 387
9.4 使用註解聲明Filter 389
9.5 過濾鏈的順序——xml 方式 390
9.6 過濾鏈的順序——annotation 方式 392
9.7 使用Filter 實現編碼的處理 393
9.8 Filter 攔截請求和轉發 395
9.9 使用Filter 實現權限驗證 398
9.10 綜合使用Filter+ThreadLocal+Cookie 實現解耦合 401
9.11 使用Cookie 實現購物車的核心邏輯 406
第10 章 Listener 接口 412
10.1 HttpSessionActivationListener 接口的使用 412
10.2 HttpSessionAttributeListener 接口的使用 416
10.3 HttpSessionBindingListener 接口的使用 418
10.4 HttpSessionListener 接口的使用 420
10.5 ServletContextAttributeListener 接口的使用 421
10.6 ServletContextListener 接口的使用 424
10.7 ServletRequestAttributeListener 接口的使用 427
10.8 ServletRequestListener 接口的使用 429
10.9 HttpSessionIdListener 接口的使用 430
10.10 使用HttpSessionListener 接口實現在線人數統計 432
第11 章 JSP-JSTL-EL 技術 435
11.1 JSP 技術 435
11.1.1 使用Servlet 生成網頁 435
11.1.2 使用JSP 生成網頁 436
11.1.3 在JSP 中執行Java 程序 438
11.1.4 JSP 本質上是Servlet 440
11.1.5 JSP 文件的內容 445
11.1.6 JSP 的指令 447
11.1.7 幾種指令的區別 448
11.1.8 驗證Servlet 使用write()方法和print()方法進行輸出 449
11.1.9 從Servlet 轉發到JSP 文件 452
11.1.10 Java 代碼塊<%%>和<%!%>的區別 453
11.1.11 內置對象pageContext 的使用 455
11.1.12 常用內置對象的使用 457
11.1.13 使用pageContext 向不同作用域中存取值 459
11.1.14 使用<%@ include file=""%>指令靜態導入其他資源 460
11.1.15 使用<jsp:include page=" ">動態導入其他資源 461
11.1.16 JSP 的註釋 462
11.1.17 使用jsp:useBean,jsp:setProperty和jsp:getProperty訪問類信息 463
11.1.18 使用<jsp:forward page="">實現轉發 465
11.2 JSTL 和EL 表達式 466
11.2.1 使用EL 表達式獲取字符串 466
11.2.2 使用EL 表達式獲取JavaBean 中的數據 467
11.2.3 使用EL 表達式查找數據 467
11.2.4 key 優先獲取作用域小的scope 值 468
11.2.5 使用EL 表達式獲取指定作用域中的值 468
11.2.6 使用EL 表達式打印property 屬性名 468
11.2.7 使用EL 表達式獲取List,array[]與Map 中的數據 469
11.2.8 使用EL 表達式輸出NULL 值 471
11.2.9 使用EL 表達式打印嵌套中的值 472
11.2.10 在EL 表達式中使用empty 進行空的判斷 472
11.2.11 使用${param}獲取URL 中的參數值 474
11.2.12 使用JSTL 表達式進行邏輯處理 474
11.2.13 對Date 進行String 格式化 477
11.3 實現基於MVC 的CURD 增刪改查 477
第12 章 異步處理AJAX 技術 493
12.1 實現無傳參無返回值——get 提交方式 494
12.2 實現有傳參無返回值——get 提交方式 495
12.3 實現無傳參無返回值——post 提交方式 496
12.4 實現有傳參無返回值——post 提交方式 497
12.5 實現無傳參有返回值String——get 提交方式 497
12.6 實現無傳參有返回值XML——get 提交方式 499
12.7 實現異步效果 500
12.8 實現同步效果 501
12.9 實現無刷新login 登錄案例 502
12.10 formdata 和payload 提交 504
12.10.1 測試get 方式傳輸數據需要依賴URL 506
12.10.2 測試post 提交使用formdata 方式傳輸數據 508
12.10.3 測試post 提交使用payload 方式傳輸數據 511
12.11 實現文件上傳:有刷新 513
12.12 實現文件上傳:AJAX 無刷新 515
第13 章 搭建Maven Nexus 私服環境 516
13.1 下載Nexus OSS 版本 517
13.2 配置Nexus OSS 環境變量 520
13.3 安裝服務和啟動服務 520
13.4 登錄Nexus 521
13.5 重置Nexus 登錄密碼 523
13.6 解決連接異常 524
13.7 倉庫的類型 526
13.8 創建hosted 類型的Maven 倉庫 527
13.9 創建proxy 類型的Maven 倉庫 529
13.10 創建group 類型的Maven 倉庫 531
13.11 group-local-proxy 倉庫之間的關係 532
作者介紹
高洪岩
某世界500強企業高級項目經理,具有10餘年項目管理與開發經驗,對多線程和並發、Android移動開發、
智能報表、分佈式處理等企業級架構技術深耕多年,專注於對Java技術開發難點與要點的理解,
擁有良好的技術素養和豐富的實踐經驗,一直在持續關注架構的優化和重構領域,喜歡用技術與教育相結合的方式分享知識。
作者著有《Java多線程編程核心技術》《Java並發編程:核心方法與框架》
《Java EE核心框架實戰第2版》《NIO與Socket編程技術指南》等圖書。