提升Java編碼技能
Java成為世界上編程語(yǔ)言之一是有其優(yōu)勢(shì)的。熟悉Java SE的程序員可以輕松地進(jìn)入到Java EE開(kāi)發(fā)中,構(gòu)建出安全、和具有擴(kuò)展性的企業(yè)級(jí)應(yīng)用程序。編寫(xiě)《Java Web高級(jí)編程——涵蓋WebSockets、Spring Framework、JPA Hibernate和Spring Security》一書(shū)的目的正是如此。
本書(shū)面向的讀者是已經(jīng)了解Java SE、SQL和基本的HTML,準(zhǔn)備將他們的Java編碼技能提升到更高水平的程序員。軟件開(kāi)發(fā)者可以按順序閱讀本書(shū)或者在遇到特定的編程問(wèn)題時(shí)將某個(gè)章節(jié)用作參考。
主要內(nèi)容
為企業(yè)級(jí)Web應(yīng)用的Java編碼提供了自我指導(dǎo)、自我學(xué)習(xí)的方法
幫助Web應(yīng)用架構(gòu)師在開(kāi)發(fā)團(tuán)隊(duì)的項(xiàng)目中或者開(kāi)發(fā)過(guò)程中應(yīng)用新的概念
對(duì)Java EE平臺(tái)7和其中的許多技術(shù)提供了詳細(xì)的介紹
講解了Servlet、JSP、WebSockets、Spring Framework、AMQP、JPA和O/RM、Spring Data、全文搜索、Apache Lucene和Hibernate Search、Spring Security和OAuth
重點(diǎn)介紹Java SE 8中新增加的常用功能,如lambda表達(dá)式和新的JSR 310 Java 8 Date and Time API等
Nicholas S. Williams是Java和相關(guān)技術(shù)領(lǐng)域的一位著名專(zhuān)家。在2010年,他被授予中部田納西州年度軟件工程師的稱(chēng)號(hào)。Nick大量參與了開(kāi)源社區(qū)工作,為Apache Log4J、Apache Tomcat、Jackon Mapper、Spring Framework和Spring Security等項(xiàng)目貢獻(xiàn)了bug修復(fù)、新特性和文檔。
目 錄
第Ⅰ部分 創(chuàng)建企業(yè)級(jí)應(yīng)用程序
第1章 介紹Java EE平臺(tái) 3
1.1 Java平臺(tái)時(shí)間線 3
1.1.1 起始 3
1.1.2 企業(yè)級(jí)Java的誕生 4
1.1.3 Java SE和Java EE共同發(fā)展 5
1.1.4 了解近期的平臺(tái)特性 7
1.1.5 持續(xù)發(fā)展 11
1.2 了解基本的Web應(yīng)用程序結(jié)構(gòu) 11
1.2.1 Servlet、過(guò)濾器、監(jiān)聽(tīng)器和JSP 11
1.2.2 目錄結(jié)構(gòu)和WAR文件 12
1.2.3 部署描述符 13
1.2.4 類(lèi)加載器架構(gòu) 14
1.2.5 企業(yè)級(jí)應(yīng)用程序歸檔文件 14
1.3 小結(jié) 15
第2章 使用Web容器 17
2.1 選擇Web容器 17
2.1.1 Apache Tomcat 18
2.1.2 GlassFish 19
2.1.3 JBoss和WildFly 19
2.1.4 其他容器和應(yīng)用服務(wù)器 20
2.1.5 本書(shū)使用Tomcat的原因 20
2.2 在個(gè)人計(jì)算機(jī)中安裝Tomcat 21
2.2.1 將Tomcat安裝為Windows服務(wù) 21
2.2.2 將Tomcat安裝為命令行應(yīng)用程序 21
2.2.3 配置自定義的JSP編譯器 23
2.3 在Tomcat中部署和卸載應(yīng)用程序 24
2.3.1 手動(dòng)部署和卸載 24
2.3.2 使用Tomcat管理器 25
2.4 通過(guò)IDE調(diào)試Tomcat 26
2.4.1 使用IntelliJ IDEA 27
2.4.2 使用Eclipse 30
2.5 小結(jié) 34
第3章 創(chuàng)建及時(shí)個(gè)Servlet 35
3.1 創(chuàng)建Servlet類(lèi) 36
3.1.1 選擇要繼承的Servlet類(lèi) 36
3.1.2 使用初始化方法和銷(xiāo)毀方法 38
3.2 配置可部署的Servlet 39
3.2.1 向描述符中添加Servlet 39
3.2.2 將Servlet映射到URL 40
3.2.3 運(yùn)行和調(diào)試Servlet 42
3.3 了解doGet、doPost和其他方法 44
3.3.1 在service方法執(zhí)行的過(guò)程中 44
3.3.2 使用HttpServletRequest 44
3.3.3 使用HttpServletResponse 47
3.4 使用參數(shù)和接受表單提交 49
3.5 使用初始化參數(shù)配置應(yīng)用程序 53
3.5.1 使用上下文初始化參數(shù) 53
3.5.2 使用Servlet初始化參數(shù) 54
3.6 通過(guò)表單上傳文件 56
3.6.1 介紹客戶支持項(xiàng)目 56
3.6.2 配置Servlet支持文件上傳 56
3.6.3 接受文件上傳 59
3.7 編寫(xiě)多線程安全的應(yīng)用程序 60
3.7.1 理解請(qǐng)求、線程和方法執(zhí)行 60
3.7.2 保護(hù)共享資源 61
3.8 小結(jié) 62
第4章 使用JSP顯示頁(yè)面內(nèi)容 63
4.1 使用
替代output.println("
") 64
4.1.1 使用JSP的原因 65
4.1.2 JSP在運(yùn)行時(shí)的處理 66
4.2 創(chuàng)建及時(shí)個(gè)JSP 67
4.2.1 了解文件結(jié)構(gòu) 67
4.2.2 指令、聲明、腳本和表達(dá)式 69
4.2.3 注釋代碼 70
4.2.4 在JSP中導(dǎo)入類(lèi) 71
4.2.5 使用指令 72
4.2.6 使用標(biāo)簽 75
4.3 在JSP中使用Java(以及不鼓勵(lì)使用Java的原因) 76
4.3.1 使用JSP中隱式的變量 76
4.3.2 不應(yīng)該在JSP中使用Java的原因 82
4.4 結(jié)合使用Servlet和JSP 82
4.4.1 配置部署描述符中的JSP屬性 82
4.4.2 將Servlet中的請(qǐng)求轉(zhuǎn)發(fā)給JSP 85
4.5 關(guān)于JSP文檔(JSPX)的注意事項(xiàng) 89
4.6 小結(jié) 91
第5章 使用會(huì)話維持狀態(tài) 93
5.1 需要會(huì)話的原因 93
5.1.1 維持狀態(tài) 94
5.1.2 記住用戶 94
5.1.3 啟動(dòng)應(yīng)用程序工作流 94
5.2 使用會(huì)話cookie和URL重寫(xiě) 95
5.2.1 了解會(huì)話cookie 96
5.2.2 URL中的會(huì)話ID 98
5.2.3 會(huì)話的漏洞 100
5.3 在會(huì)話中存儲(chǔ)數(shù)據(jù) 102
5.3.1 在部署描述符中配置會(huì)話 103
5.3.2 存儲(chǔ)和獲取數(shù)據(jù) 105
5.3.3 刪除數(shù)據(jù) 109
5.3.4 在會(huì)話中存儲(chǔ)更復(fù)雜的數(shù)據(jù) 111
5.4 使用會(huì)話 114
5.4.1 為客戶支持應(yīng)用程序添加登錄功能 114
5.4.2 使用監(jiān)聽(tīng)器檢測(cè)會(huì)話的變化 118
5.4.3 維護(hù)活躍會(huì)話列表 120
5.5 將使用會(huì)話的應(yīng)用程序群集化 124
5.5.1 在群集中使用會(huì)話ID 124
5.5.2 了解會(huì)話復(fù)制和故障恢復(fù) 126
5.6 小結(jié) 127
第6章 在JSP中使用表達(dá)式語(yǔ)言 129
6.1 了解表達(dá)式語(yǔ)言 129
6.1.1 表達(dá)式語(yǔ)言的用途 130
6.1.2 了解基本語(yǔ)法 130
6.1.3 添加EL表達(dá)式 132
6.2 使用EL語(yǔ)法 133
6.2.1 保留關(guān)鍵字 133
6.2.2 操作符優(yōu)先級(jí) 134
6.2.3 對(duì)象屬性和方法 139
6.2.4 EL函數(shù) 140
6.2.5 靜態(tài)字段和方法訪問(wèn) 141
6.2.6 枚舉 142
6.2.7 lambda表達(dá)式 142
6.2.8 集合 143
6.3 在EL表達(dá)式中使用作用域變量 144
6.3.1 使用隱式的EL作用域 145
6.3.2 使用隱式的EL變量 148
6.4 使用流API訪問(wèn)集合 151
6.4.1 了解中間操作 151
6.4.2 使用終結(jié)操作 153
6.4.3 使用流API 154
6.5 使用表達(dá)式語(yǔ)言替換Java代碼 155
6.6 小結(jié) 157
第7章 使用Java標(biāo)準(zhǔn)標(biāo)簽庫(kù) 159
7.1 JSP標(biāo)簽和JSTL簡(jiǎn)介 159
7.2 使用核心標(biāo)簽庫(kù)(C命名空間) 163
7.2.1 163
7.2.2 164
7.2.3 165
7.2.4 、和166
7.2.5 167
7.2.6 168
7.2.7 168
7.2.8 169
7.2.9 和170
7.2.10 使用核心庫(kù)標(biāo)簽 170
7.3 使用國(guó)際化和格式化標(biāo)簽庫(kù)(FMT命名空間) 173
7.3.1 國(guó)際化和本地化組件 173
7.3.2 175
7.3.3 176
7.3.4 和176
7.3.5 177
7.3.6 和177
7.3.7 和178
7.3.8 和179
7.3.9 使用i18n和格式化庫(kù)標(biāo)簽 180
7.4 使用數(shù)據(jù)庫(kù)訪問(wèn)標(biāo)簽庫(kù)(SQL命名空間) 182
7.5 使用XML處理標(biāo)簽庫(kù)(X命名空間) 184
7.6 使用JSP標(biāo)簽替換Java代碼 184
7.7 小結(jié) 186
第8章 編寫(xiě)自定義標(biāo)簽和函數(shù)庫(kù) 189
8.1 了解TLD、標(biāo)簽文件和標(biāo)簽處理器 189
8.1.1 讀取Java標(biāo)準(zhǔn)標(biāo)簽庫(kù)TLD 190
8.1.2 比較JSP指令和標(biāo)簽文件指令 196
8.2 創(chuàng)建標(biāo)簽文件用作HTML模板 198
8.3 創(chuàng)建日期格式化標(biāo)簽處理器 199
8.4 創(chuàng)建EL函數(shù)簡(jiǎn)寫(xiě)字符串 203
8.5 使用自定義JSP標(biāo)簽替換Java代碼 204
8.6 小結(jié) 210
第9章 使用過(guò)濾器改進(jìn)應(yīng)用程序 211
9.1 了解過(guò)濾器的目的 211
9.1.1 日志過(guò)濾器 212
9.1.2 驗(yàn)證過(guò)濾器 212
9.1.3 壓縮和加密過(guò)濾器 212
9.1.4 錯(cuò)誤處理過(guò)濾器 212
9.2 創(chuàng)建、聲明和映射過(guò)濾器 213
9.2.1 了解過(guò)濾器鏈 213
9.2.2 映射到URL模式和Servlet名稱(chēng) 213
9.2.3 映射到不同的請(qǐng)求派發(fā)器類(lèi)型 214
9.2.4 使用部署描述符 214
9.2.5 使用注解 215
9.2.6 使用編程式配置 215
9.3 過(guò)濾器排序 216
9.3.1 URL模式映射和Servlet名稱(chēng)映射 217
9.3.2 演示過(guò)濾器順序 218
9.3.3 使用過(guò)濾器處理異步請(qǐng)求 220
9.4 調(diào)查過(guò)濾器的實(shí)際用例 224
9.4.1 添加簡(jiǎn)單的日志過(guò)濾器 225
9.4.2 使用過(guò)濾器壓縮響應(yīng)內(nèi)容 226
9.5 使用過(guò)濾器簡(jiǎn)化認(rèn)證 230
9.6 小結(jié) 231
第10章 在應(yīng)用程序中使用WebSocket進(jìn)行交互 233
10.1 演變:從AJAX到WEBSOCKET 234
10.1.1 問(wèn)題:從服務(wù)器獲得新數(shù)據(jù)到瀏覽器 234
10.1.2 解決方案1:頻繁輪詢(xún) 235
10.1.3 解決方案2:長(zhǎng)輪詢(xún) 236
10.1.4 解決方案3:分塊編碼 237
10.1.5 解決方案4:Applet和Adobe Flash 238
10.1.6 WebSocket:一種無(wú)人知道但已經(jīng)存在的解決方案 239
10.2 了解WebSocket API 242
10.2.1 HTML5(JavaScript)客戶端API 243
10.2.2 Java WebSocket API 245
10.3 使用WebSocket創(chuàng)建多人游戲 247
10.3.1 實(shí)現(xiàn)基本的三連棋游戲策略 247
10.3.2 創(chuàng)建服務(wù)器終端 248
10.3.3 編寫(xiě)JavaScript游戲控制臺(tái) 252
10.3.4 WebSocket三連棋游戲試玩 256
10.4 在群集中使用WebSocket進(jìn)行通信 257
10.4.1 使用兩個(gè)Servlet實(shí)例模擬簡(jiǎn)單的群集 257
10.4.2 發(fā)送和接收二進(jìn)制消息 259
10.4.3 測(cè)試模擬群集應(yīng)用程序 261
10.5 在客戶支持應(yīng)用程序中添加"支持與客戶聊天"功能 262
10.5.1 使用編碼器和解碼器轉(zhuǎn)換消息 262
10.5.2 創(chuàng)建聊天服務(wù)器終端 264
10.5.3 編寫(xiě)JavaScript聊天應(yīng)用程序 267
10.6 小結(jié) 269
第11章 使用日志監(jiān)控應(yīng)用程序 271
11.1 了解日志的概念 272
11.1.1 記錄日志的原因 272
11.1.2 在日志中記錄的內(nèi)容 273
11.1.3 日志的寫(xiě)入方式 274
11.2 使用日志級(jí)別和分類(lèi) 276
11.2.1 使用不同日志級(jí)別的原因 276
11.2.2 定義的日志級(jí)別 276
11.2.3 日志分類(lèi)的工作方式 277
11.2.4 篩選的工作方式 277
11.3 選擇日志框架 277
11.3.1 API和實(shí)現(xiàn) 278
11.3.2 性能 278
11.3.3 Apache Commons Logging和SLF4J 279
11.3.4 Log4j 2簡(jiǎn)介 280
11.4 在應(yīng)用程序中集成日志 283
11.4.1 創(chuàng)建Log4j 2配置文件 284
11.4.2 在Web過(guò)濾器中使用魚(yú)標(biāo)簽 287
11.4.3 在Java代碼中編寫(xiě)日志語(yǔ)句 288
11.4.4 在JSP中使用日志標(biāo)簽庫(kù) 290
11.4.5 客戶支持應(yīng)用程序中的日志 290
11.5 小結(jié) 291
第Ⅱ部分 添加Spring Framework
第12章 介紹Spring Framework 295
12.1 Spring Framework簡(jiǎn)介 296
12.1.1 反轉(zhuǎn)控制和依賴(lài)注入 296
12.1.2 面向切面編程 297
12.1.3 數(shù)據(jù)訪問(wèn)和事務(wù)管理 297
12.1.4 應(yīng)用程序消息 297
12.1.5 Web應(yīng)用程序的模型-視圖-控制器模式 298
12.2 使用Spring Framework的原因 298
12.2.1 邏輯代碼分組 298
12.2.2 使用同一代碼庫(kù)的多個(gè)用戶界面 298
12.3 了解應(yīng)用上下文 299
12.4 啟動(dòng)Spring Framework 300
12.4.1 使用部署描述符啟動(dòng)Spring 301
12.4.2 在初始化器中使用編程的方式啟動(dòng)Spring 303
12.5 配置Spring Framework 306
12.5.1 創(chuàng)建XML配置 308
12.5.2 創(chuàng)建混合配置 310
12.5.3 使用@Configuration配置Spring 314
12.6 使用bean definition profile 318
12.6.1 了解profile的工作原理 319
12.6.2 考慮反模式和安全問(wèn)題 321
12.7 小結(jié) 322
第13章 使用控制器替代Servlet 323
13.1 了解@RequestMapping 323
13.1.1 使用@RequestMapping特性
縮小請(qǐng)求匹配的范圍 324
13.1.2 指定控制器方法參數(shù) 328
13.1.3 為控制器方法選擇有效的返回類(lèi)型 335
13.2 使用Spring Framework的模型和視圖模式 337
13.2.1 使用顯式的視圖和視圖名稱(chēng) 338
13.2.2 使用含有模型特性的隱式視圖 340
13.2.3 返回響應(yīng)實(shí)體 341
13.3 使用表單對(duì)象簡(jiǎn)化開(kāi)發(fā) 346
13.3.1 在模型中添加表單對(duì)象 347
13.3.2 使用Spring Framework標(biāo)簽 347
13.3.3 獲得被提交的表單數(shù)據(jù) 349
13.4 更新客戶支持應(yīng)用程序 350
13.4.1 啟用Multipart支持 350
13.4.2 將Servlet轉(zhuǎn)換成Spring MVC控制器 351
13.4.3 創(chuàng)建自定義下載視圖 352
13.5 小結(jié) 353
第14章 使用服務(wù)和倉(cāng)庫(kù)支持控制器 355
14.1 了解模型-視圖-控制器模式與控制器-服務(wù)-倉(cāng)庫(kù)模式 355
14.1.1 識(shí)別程序邏輯的不同類(lèi)型 356
14.1.2 使用倉(cāng)庫(kù)提供持久化邏輯 357
14.1.3 使用服務(wù)提供業(yè)務(wù)邏輯 357
14.1.4 使用控制器提供用戶界面邏輯 358
14.2 使用根應(yīng)用上下文替代Web應(yīng)用上下文 359
14.2.1 在多用戶界面中重用根應(yīng)用上下文 359
14.2.2 將業(yè)務(wù)邏輯從控制器移動(dòng)到服務(wù) 360
14.2.3 使用倉(cāng)庫(kù)存儲(chǔ)數(shù)據(jù) 364
14.3 使用異步和計(jì)劃執(zhí)行改進(jìn)服務(wù) 368
14.3.1 了解執(zhí)行器和調(diào)度器 369
14.3.2 配置調(diào)度器和異步支持 369
14.3.3 創(chuàng)建和使用@Async方法 371
14.3.4 創(chuàng)建和使用@Scheduled方法 372
14.4 使用WebSocket實(shí)現(xiàn)邏輯層分離 373
14.4.1 在Spring應(yīng)用上下文中添加由容器管理的對(duì)象 373
14.4.2 使用Spring WebSocket配置器 375
14.4.3 記住:WebSocket只是業(yè)務(wù)邏輯的另一個(gè)界面 376
14.5 小結(jié) 380
第15章 使用Spring Framework i18n國(guó)際化應(yīng)用程序 381
15.1 使用Spring Framework i18n的原因 381
15.1.1 使國(guó)際化變得更容易 382
15.1.2 直接本地化錯(cuò)誤消息 382
15.2 使用基本的國(guó)際化和本地化API 382
15.2.1 了解資源包和消息格式 383
15.2.2 使用消息源進(jìn)行挽救 385
15.2.3 使用消息源國(guó)際化JSP 386
15.3 在Spring Framework中配置國(guó)際化 387
15.3.1 創(chuàng)建消息源 387
<
還是很不錯(cuò)的
技術(shù)點(diǎn)覆蓋很全面
很好
快遞速度太慢了...周末還放假不成...
挺好的。
還沒(méi)看,不好評(píng)價(jià),貌似網(wǎng)評(píng)不錯(cuò)
很好
ok
基礎(chǔ)
很好
歷經(jīng)艱難險(xiǎn)阻,前后兩次下定,兩本書(shū)終于收到。當(dāng)當(dāng)需要改進(jìn)物流,其中的故事你們是知道的。書(shū)是好書(shū),只是書(shū)的表面有些臟,不過(guò)不影響閱讀。我是評(píng)書(shū)呢?還是評(píng)當(dāng)當(dāng)?shù)姆?wù)呢?書(shū)是五星,當(dāng)當(dāng)服務(wù)還需改進(jìn),至于為什么,請(qǐng)看我的訂單記錄。
覆蓋面比較廣,不錯(cuò)
程序員需要不停學(xué)習(xí),拓展知識(shí)
非常不錯(cuò)的書(shū)。
一如既往的滿意
很差的一次購(gòu)買(mǎi),書(shū)沒(méi)有其他包裝,拿到的時(shí)候很皺了,
書(shū)的味道有點(diǎn)重,可惡的是物流竟然不送貨上門(mén),連個(gè)電話都沒(méi)有,如果不是看到支付寶的提醒,都不知道東西到了
套個(gè)袋子就用中通了,來(lái)的時(shí)候袋子都破的不像樣子了,書(shū)都這熊樣了!厲害了當(dāng)當(dāng),不比不知道,以后我是某東的腦殘粉!
一般 實(shí)例代碼不是很全面 沒(méi)有一定基礎(chǔ) 不一定能看明白
這紙質(zhì)也太差了吧,感覺(jué)和淘寶買(mǎi)的盜版書(shū)質(zhì)量一個(gè)樣,關(guān)鍵還賣(mài)的死貴!質(zhì)量太差!以后再也不當(dāng)當(dāng)買(mǎi)書(shū)了
很好的書(shū)籍,基礎(chǔ)知識(shí)和高級(jí)技術(shù)都包含了!不錯(cuò)!
本書(shū)主要spring系列的框架,適合有經(jīng)驗(yàn)的人看看
作者循序漸進(jìn),魚(yú)和漁都有。有些基礎(chǔ)的人能夠感覺(jué)一些枝結(jié)打通。
對(duì)高級(jí)初學(xué)沒(méi)什么用,全部在介紹spring框架,并沒(méi)有SSH
書(shū)翻開(kāi)有一股味道,感覺(jué)沒(méi)有之前買(mǎi)的書(shū)的紙好,書(shū)內(nèi)容比較新,剛到還沒(méi)看
書(shū)有點(diǎn)明顯的折痕 封面有點(diǎn)膠水 不過(guò)不影響閱讀 總體來(lái)說(shuō)還不錯(cuò)
對(duì)于框架spring講的很詳細(xì),挺推薦的,而且15年的書(shū),比市面上大多框架書(shū)技術(shù)要實(shí)用些,很多書(shū)只講struts2為重點(diǎn),可是現(xiàn)在已成淘汰趨勢(shì)
買(mǎi)了wrox很多書(shū)了,一直很喜歡內(nèi)容的編排,能讓自己快速學(xué)到想要了解的內(nèi)容,老外寫(xiě)的東西詳細(xì)而不浮躁,這本java web高級(jí)編程,翻譯的不錯(cuò),紙張很好,推薦一下