《Java輕量級Web開發(fā)深度探索》介紹如何學習和使用流行的Java編程語言進行Web開發(fā)。主要內(nèi)容包括Java開發(fā)Web應(yīng)用基礎(chǔ),結(jié)構(gòu)化程序設(shè)計與面向?qū)ο缶幊蹋谋咎幚砼c網(wǎng)絡(luò)編程,并發(fā)程序設(shè)計,應(yīng)用程序開發(fā),使用SpringBoot創(chuàng)建Web服務(wù)。 《Java輕量級Web開發(fā)深度探索》第1章著重介紹如何使用Java編程語言快速上手Web開發(fā)。第2章著重介紹結(jié)構(gòu)化程序設(shè)計。第3章著重介紹面向?qū)ο缶幊。?章著重介紹處理文本的有限狀態(tài)機方法。第5章著重介紹套接字網(wǎng)絡(luò)編程。第6章著重介紹并發(fā)程序設(shè)計。第7章著重介紹控制臺應(yīng)用程序開發(fā)基礎(chǔ)以及如何開發(fā)Web應(yīng)用程序。第8章著重介紹如何使用SpringBoot創(chuàng)建Web服務(wù),使用JavaScript框架實現(xiàn)Web前端展示。 《Java輕量級Web開發(fā)深度探索》適合對軟件開發(fā)感興趣的青少年或者大學生閱讀和學習,同時也適合對互聯(lián)網(wǎng)行業(yè)感興趣的人士參考使用。
《Java輕量級Web開發(fā)深度探索》從零基礎(chǔ)開始介紹如何使用流行的Java編程語言進行Web開發(fā)。本書第1~7章是基礎(chǔ)篇,第8章是應(yīng)用篇。其中第1章介紹了開發(fā)Web應(yīng)用需要的軟件環(huán)境,特別是IDEA集成開發(fā)環(huán)境。第2章著重介紹控制結(jié)構(gòu)等結(jié)構(gòu)化程序設(shè)計入門知識。第3章著重介紹類和對象等面向?qū)ο缶幊袒A(chǔ)。第4章著重介紹處理文本的有限狀態(tài)機方法和正則表達式。第5章著重介紹套接字網(wǎng)絡(luò)編程。第6章著重介紹多線程等并發(fā)程序設(shè)計。第7章著重介紹控制臺應(yīng)用程序開發(fā)基礎(chǔ)以及如何開發(fā)Web應(yīng)用程序。第8章著重介紹如何使用SpringBoot框架和React框架實現(xiàn)前后端分離的Web應(yīng)用。
持續(xù)演化中的Java編程語言由于其嚴謹?shù)恼Z法和跨平臺特性,一直是Web開發(fā)后臺編程語言的之一。Java語法與Web開發(fā)需求之間相互促進,形成更緊密的聯(lián)系和高效的發(fā)展。例如,JDK 1.5引入的注解(Annotation)方便了MVC(Model View Controller)設(shè)計模式中的控制器開發(fā)。
Java Web開發(fā)技術(shù)經(jīng)過20多年的發(fā)展,由2000年左右開始流行的Servlet、JSP演化到早期的J2EE以及支持MVC設(shè)計模式的Struts框架、Spring框架和支持微服務(wù)的Spring Boot框架。
本書從零基礎(chǔ)開始介紹如何使用流行的Java編程語言進行Web開發(fā)。本書第1~7章是基礎(chǔ)篇,第8章是應(yīng)用篇。其中第1章介紹了開發(fā)Web應(yīng)用需要的軟件環(huán)境,特別是IDEA集成開發(fā)環(huán)境。第2章著重介紹控制結(jié)構(gòu)等結(jié)構(gòu)化程序設(shè)計入門知識。第3章著重介紹類和對象等面向?qū)ο缶幊袒A(chǔ)。第4章著重介紹處理文本的有限狀態(tài)機方法和正則表達式。第5章著重介紹套接字網(wǎng)絡(luò)編程。第6章著重介紹多線程等并發(fā)程序設(shè)計。第7章著重介紹控制臺應(yīng)用程序開發(fā)基礎(chǔ)以及如何開發(fā)Web應(yīng)用程序。第8章著重介紹如何使用SpringBoot框架和React框架實現(xiàn)前后端分離的Web應(yīng)用。
本書相關(guān)的參考軟件和代碼在技術(shù)QQ群587682878的共享文件中可以找到。本書中介紹到的一些專門的技術(shù)可以在和本書相關(guān)的QQ群中交流討論。這些技術(shù)群包括:Solr技術(shù)群301075975、ElasticSearch技術(shù)群460405445、Java文本處理基礎(chǔ)群453406621。
本書由羅剛編著。感謝早期合著者、合作伙伴、員工、學員、讀者、相關(guān)合作公司的支持。
本書適合零基礎(chǔ)而有志于從事Web方向的Java開發(fā)工程師或者架構(gòu)師閱讀,也適合需要具體實現(xiàn)Web應(yīng)用的程序員使用,對于互聯(lián)網(wǎng)等相關(guān)領(lǐng)域的研究人員也有一定的參考價值。讀者可以通過閱讀本書,自己動手創(chuàng)建一個簡單的微服務(wù)架構(gòu)。本書對于開發(fā)微信小程序后端也有參考價值。同時獵兔搜索技術(shù)團隊已經(jīng)開發(fā)出與本書相關(guān)的培訓課程和商業(yè)軟件。
編 者
羅剛,獵兔搜索技術(shù)創(chuàng)始人,曾經(jīng)擔任國防大學科研處技術(shù)顧問,工信部輿情開發(fā)顧問,紅象云騰公司技術(shù)顧問,北京安妮?怂剐畔⒆稍冇邢薰炯夹g(shù)顧問,中和云技術(shù)合伙人。
第1章 Java開發(fā)Web應(yīng)用基礎(chǔ) 1
1.1 Java編程語言概述 1
1.2 Java基礎(chǔ) 3
1.2.1 準備開發(fā)環(huán)境 3
1.2.2 Eclipse集成開發(fā)環(huán)境 5
1.2.3 IDEA集成開發(fā)環(huán)境 9
1.3 本章小結(jié) 10
第2章 結(jié)構(gòu)化程序設(shè)計 11
2.1 基本數(shù)據(jù)類型 11
2.2 變量 12
2.2.1 表達式執(zhí)行順序 14
2.2.2 簡化的運算符 14
2.2.3 常量 16
2.3 控制結(jié)構(gòu) 16
2.3.1 語句 17
2.3.2 判斷條件 17
2.3.3 三元運算符 18
2.3.4 條件判斷 19
2.3.5 循環(huán) 23
2.4 方法 29
2.4.1 main方法 33
2.4.2 遞歸調(diào)用 33
2.4.3 方法調(diào)用棧 34
2.5 數(shù)組 34
2.5.1 數(shù)組求和 37
2.5.2 計算平均值舉例 37
2.5.3 快速復(fù)制 38
2.5.4 循環(huán)不變式 40
2.6 字符串 41
2.6.1 字符編碼 43
2.6.2 格式化 44
2.6.3 增強switch語句 45
2.7 數(shù)值類型 45
2.7.1 類型轉(zhuǎn)換 49
2.7.2 整數(shù)運算 50
2.7.3 數(shù)值運算 51
2.7.4 位運算 52
2.8 提高代碼質(zhì)量 60
2.8.1 代碼整潔 60
2.8.2 單元測試 61
2.8.3 調(diào)試 61
2.8.4 重構(gòu) 62
2.9 本章小結(jié) 62
第3章 面向?qū)ο缶幊?64
3.1 類和對象 64
3.1.1 類 65
3.1.2 類方法 65
3.1.3 類變量 65
3.1.4 實例變量 66
3.1.5 構(gòu)造方法 68
3.1.6 對象 71
3.1.7 實例方法 74
3.1.8 調(diào)用方法 75
3.1.9 內(nèi)部類 76
3.1.10 克隆 76
3.1.11 結(jié)束 77
3.2 繼承 78
3.2.1 重寫 78
3.2.2 繼承構(gòu)造方法 80
3.2.3 接口 81
3.2.4 匿名類 84
3.2.5 類的兼容性 84
3.3 封裝 84
3.4 靜態(tài) 85
3.4.1 靜態(tài)變量 85
3.4.2 靜態(tài)類 86
3.4.3 修飾類的關(guān)鍵詞 86
3.5 枚舉類型 87
3.6 集合類 90
3.6.1 動態(tài)數(shù)組 90
3.6.2 散列表 91
3.6.3 泛型 94
3.6.4 Google Guava集合 97
3.6.5 類型擦除 98
3.6.6 遍歷 99
3.6.7 排序 102
3.6.8 Lambda表達式 104
3.7 比較 104
3.7.1 Comparable接口 104
3.7.2 比較器 106
3.8 SOLID原則 107
3.9 異常 108
3.9.1 斷言 108
3.9.2 Java中的異常 109
3.9.3 從方法中拋出異常 111
3.9.4 處理異常 113
3.9.5 正確使用異常 114
3.10 字符串對象 117
3.10.1 字符對象 119
3.10.2 查找字符串 120
3.10.3 修改字符串 120
3.10.4 格式化 121
3.10.5 常量池 121
3.10.6 關(guān)于對象不可改變 124
3.11 日期 125
3.12 大數(shù)對象 126
3.13 給方法傳參數(shù) 126
3.13.1 基本類型和對象 128
3.13.2 重載 129
3.14 文件操作 130
3.14.1 文本文件 131
3.14.2 二進制文件 134
3.14.3 文件位置 137
3.14.4 讀寫Unicode編碼的文件 137
3.14.5 文件描述符 139
3.14.6 對象序列化 140
3.14.7 使用IOUtils工具類 144
3.15 Java類庫 145
3.15.1 使用Java類庫 146
3.15.2 構(gòu)建jar包 147
3.15.3 使用Ant 150
3.15.4 生成javadoc 151
3.15.5 ClassLoader 152
3.15.6 反射 156
3.16 編程風格 157
3.16.1 命名規(guī)范 157
3.16.2 流暢接口 158
3.16.3 日志 158
3.17 本章小結(jié) 164
第4章 處理文本 165
4.1 字符串操作 165
4.2 詞法分析 167
4.3 有限狀態(tài)機 169
4.3.1 從NFA到DFA 171
4.3.2 確定有限狀態(tài)機DFA 175
4.4 正則表達式 178
4.5 解析器生成器JavaCC 182
4.6 本章小結(jié) 184
第5章 網(wǎng)絡(luò)編程 185
5.1 套接字 185
5.1.1 客戶端 186
5.1.2 服務(wù)器端 187
5.1.3 TCP 189
5.1.4 多播 190
5.2 Web服務(wù)器 190
5.2.1 HTTP協(xié)議 190
5.2.2 Web服務(wù)器 194
5.3 異步IO 195
5.4 下載網(wǎng)頁 195
5.4.1 使用curl 195
5.4.2 使用URL類 196
5.4.3 使用HTTPClient 196
5.5 本章小結(jié) 197
第6章 并發(fā)程序設(shè)計 198
6.1 線程 198
6.1.1 內(nèi)存與線程安全 201
6.1.2 線程組 202
6.1.3 狀態(tài) 202
6.1.4 守護線程 204
6.1.5 并行編程 205
6.2 線程池 208
6.3 fork-join框架 209
6.4 線程局域變量 212
6.5 阻塞隊列 213
6.5.1 阻塞隊列 213
6.5.2 半阻塞隊列 215
6.6 并發(fā) 217
6.6.1 虛擬機如何實現(xiàn)同步 223
6.6.2 單件模式 224
6.7 內(nèi)存管理 225
6.7.1 虛擬機的內(nèi)存 225
6.7.2 內(nèi)存模型 228
6.7.3 垃圾回收的工作原理 230
6.7.4 監(jiān)控垃圾回收 231
6.7.5 程序中的內(nèi)存管理 232
6.7.6 弱引用 233
6.8 本章小結(jié) 238
第7章 開發(fā)應(yīng)用程序 239
7.1 控制臺應(yīng)用程序 239
7.1.1 接收參數(shù) 239
7.1.2 讀取輸入 240
7.1.3 輸出 241
7.1.4 配置信息 241
7.1.5 部署 243
7.1.6 系統(tǒng)屬性 243
7.2 開發(fā)Web程序 244
7.2.1 Web程序是從哪里來的 244
7.2.2 Servlet和JSP 245
7.2.3 翻頁 246
7.2.4 Spring容器 246
7.3 Jdbi操作數(shù)據(jù)庫 248
7.4 XML序列化 250
7.4.1 JAXB框架 250
7.4.2 XStream工具庫 252
7.5 調(diào)用本地方法 253
7.6 國際化 256
7.7 性能 259
7.8 版本管理 259
7.9 本章小結(jié) 260
第8章 SpringBoot開發(fā) 261
8.1 測試 Restful API的curl指令 261
8.2 開發(fā)Restful API 262
8.3 實現(xiàn)分頁 266
8.4 SpringBoot權(quán)限管理 272
8.4.1 Security實現(xiàn)權(quán)限控制 273
8.4.2 Shiro實現(xiàn)權(quán)限控制 274
8.5 使用WebSocket實現(xiàn)實時通信 284
8.6 本章小結(jié) 288
參考文獻 289