《Java輕量級Web開發(fā)深度探索》介紹如何學習和使用流行的Java編程語言進行Web開發(fā)。主要內(nèi)容包括Java開發(fā)Web應用基礎,結構化程序設計與面向對象編程,文本處理與網(wǎng)絡編程,并發(fā)程序設計,應用程序開發(fā),使用SpringBoot創(chuàng)建Web服務。 《Java輕量級Web開發(fā)深度探索》第1章著重介紹如何使用Java編程語言快速上手Web開發(fā)。第2章著重介紹結構化程序設計。第3章著重介紹面向對象編程。第4章著重介紹處理文本的有限狀態(tài)機方法。第5章著重介紹套接字網(wǎng)絡編程。第6章著重介紹并發(fā)程序設計。第7章著重介紹控制臺應用程序開發(fā)基礎以及如何開發(fā)Web應用程序。第8章著重介紹如何使用SpringBoot創(chuàng)建Web服務,使用JavaScript框架實現(xiàn)Web前端展示。 《Java輕量級Web開發(fā)深度探索》適合對軟件開發(fā)感興趣的青少年或者大學生閱讀和學習,同時也適合對互聯(lián)網(wǎng)行業(yè)感興趣的人士參考使用。
《Java輕量級Web開發(fā)深度探索》從零基礎開始介紹如何使用流行的Java編程語言進行Web開發(fā)。本書第1~7章是基礎篇,第8章是應用篇。其中第1章介紹了開發(fā)Web應用需要的軟件環(huán)境,特別是IDEA集成開發(fā)環(huán)境。第2章著重介紹控制結構等結構化程序設計入門知識。第3章著重介紹類和對象等面向對象編程基礎。第4章著重介紹處理文本的有限狀態(tài)機方法和正則表達式。第5章著重介紹套接字網(wǎng)絡編程。第6章著重介紹多線程等并發(fā)程序設計。第7章著重介紹控制臺應用程序開發(fā)基礎以及如何開發(fā)Web應用程序。第8章著重介紹如何使用SpringBoot框架和React框架實現(xiàn)前后端分離的Web應用。
持續(xù)演化中的Java編程語言由于其嚴謹?shù)恼Z法和跨平臺特性,一直是Web開發(fā)后臺編程語言的之一。Java語法與Web開發(fā)需求之間相互促進,形成更緊密的聯(lián)系和高效的發(fā)展。例如,JDK 1.5引入的注解(Annotation)方便了MVC(Model View Controller)設計模式中的控制器開發(fā)。
Java Web開發(fā)技術經(jīng)過20多年的發(fā)展,由2000年左右開始流行的Servlet、JSP演化到早期的J2EE以及支持MVC設計模式的Struts框架、Spring框架和支持微服務的Spring Boot框架。
本書從零基礎開始介紹如何使用流行的Java編程語言進行Web開發(fā)。本書第1~7章是基礎篇,第8章是應用篇。其中第1章介紹了開發(fā)Web應用需要的軟件環(huán)境,特別是IDEA集成開發(fā)環(huán)境。第2章著重介紹控制結構等結構化程序設計入門知識。第3章著重介紹類和對象等面向對象編程基礎。第4章著重介紹處理文本的有限狀態(tài)機方法和正則表達式。第5章著重介紹套接字網(wǎng)絡編程。第6章著重介紹多線程等并發(fā)程序設計。第7章著重介紹控制臺應用程序開發(fā)基礎以及如何開發(fā)Web應用程序。第8章著重介紹如何使用SpringBoot框架和React框架實現(xiàn)前后端分離的Web應用。
本書相關的參考軟件和代碼在技術QQ群587682878的共享文件中可以找到。本書中介紹到的一些專門的技術可以在和本書相關的QQ群中交流討論。這些技術群包括:Solr技術群301075975、ElasticSearch技術群460405445、Java文本處理基礎群453406621。
本書由羅剛編著。感謝早期合著者、合作伙伴、員工、學員、讀者、相關合作公司的支持。
本書適合零基礎而有志于從事Web方向的Java開發(fā)工程師或者架構師閱讀,也適合需要具體實現(xiàn)Web應用的程序員使用,對于互聯(lián)網(wǎng)等相關領域的研究人員也有一定的參考價值。讀者可以通過閱讀本書,自己動手創(chuàng)建一個簡單的微服務架構。本書對于開發(fā)微信小程序后端也有參考價值。同時獵兔搜索技術團隊已經(jīng)開發(fā)出與本書相關的培訓課程和商業(yè)軟件。
編 者
羅剛,獵兔搜索技術創(chuàng)始人,曾經(jīng)擔任國防大學科研處技術顧問,工信部輿情開發(fā)顧問,紅象云騰公司技術顧問,北京安妮?怂剐畔⒆稍冇邢薰炯夹g顧問,中和云技術合伙人。
第1章 Java開發(fā)Web應用基礎 1
1.1 Java編程語言概述 1
1.2 Java基礎 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 本章小結 10
第2章 結構化程序設計 11
2.1 基本數(shù)據(jù)類型 11
2.2 變量 12
2.2.1 表達式執(zhí)行順序 14
2.2.2 簡化的運算符 14
2.2.3 常量 16
2.3 控制結構 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 遞歸調用 33
2.4.3 方法調用棧 34
2.5 數(shù)組 34
2.5.1 數(shù)組求和 37
2.5.2 計算平均值舉例 37
2.5.3 快速復制 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 類型轉換 49
2.7.2 整數(shù)運算 50
2.7.3 數(shù)值運算 51
2.7.4 位運算 52
2.8 提高代碼質量 60
2.8.1 代碼整潔 60
2.8.2 單元測試 61
2.8.3 調試 61
2.8.4 重構 62
2.9 本章小結 62
第3章 面向對象編程 64
3.1 類和對象 64
3.1.1 類 65
3.1.2 類方法 65
3.1.3 類變量 65
3.1.4 實例變量 66
3.1.5 構造方法 68
3.1.6 對象 71
3.1.7 實例方法 74
3.1.8 調用方法 75
3.1.9 內(nèi)部類 76
3.1.10 克隆 76
3.1.11 結束 77
3.2 繼承 78
3.2.1 重寫 78
3.2.2 繼承構造方法 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 修飾類的關鍵詞 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 關于對象不可改變 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 構建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 本章小結 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 本章小結 184
第5章 網(wǎng)絡編程 185
5.1 套接字 185
5.1.1 客戶端 186
5.1.2 服務器端 187
5.1.3 TCP 189
5.1.4 多播 190
5.2 Web服務器 190
5.2.1 HTTP協(xié)議 190
5.2.2 Web服務器 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 本章小結 197
第6章 并發(fā)程序設計 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 本章小結 238
第7章 開發(fā)應用程序 239
7.1 控制臺應用程序 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 調用本地方法 253
7.6 國際化 256
7.7 性能 259
7.8 版本管理 259
7.9 本章小結 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權限管理 272
8.4.1 Security實現(xiàn)權限控制 273
8.4.2 Shiro實現(xiàn)權限控制 274
8.5 使用WebSocket實現(xiàn)實時通信 284
8.6 本章小結 288
參考文獻 289