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