前言 *1篇 Spring核心框架 *1章 Spring概述2 1.1 Spring的由來與發展2 1.1.1 Java簡史3 1.1.2 Spring編年簡史5 1.2 Spring的概念及理念6 1.3 Spring框架體繫結構7 1.4 Spring生態圈10 1.5 Spring資源與社區12 1.6 Spring綜述13 *2章 Spring IoC容器初探14 2.1 Spring IoC容器及相關概念14 2.1.1 組件、框架和容器14 2.1.2 JavaBean、POJO和EJB簡介16 2.1.3 IoC與DI簡介17 2.1.4 Spring與EJB簡介19 2.2 Spring容器初始化20 2.2.1 BeanFactory與ApplicationContext20 2.2.2 ApplicationContext初始化方式21 2.2.3 Spring基於XML的配置文件結構23 2.2.4 Bean的配置方式24 2.2.5 哪些類需要配置成Bean25 2.2.6 容器的關閉25 2.2.7 Spring容器的定義26 2.3 依賴注入與方式26 2.3.1 構造函數注入27 2.3.2 設置值注入28 第3章 Web項目環境搭建與項目創建30 3.1 環境與前置準備30 3.1.1 JDK的下載與安裝30 3.1.2 Eclipse的下載與安裝32 3.1.3 Tomcat的下載與安裝33 3.1.4 MySQL的下載與安裝34 3.1.5 Maven的下載與安裝35 3.2 基於Maven和Eclipse建立項目36 3.2.1 在Eclipse中創建Maven Web項目37 3.2.2 將Maven創建的Web項目導入Eclipse中38 3.2.3 Eclipse編譯器和項目特性修改39 3.3 Spring框架導入與項目目錄41 3.3.1 Spring核心包及相關依賴包的導入41 3.3.2 項目目錄結構及創建42 3.4 簡單的完整實例43 第4章 Spring IoC容器進階46 4.1 Bean實例化的更多方式46 4.1.1 靜態內部類46 4.1.2 靜態工廠方法47 4.1.3 實例工廠方法47 4.2 Bean的配置屬性48 4.2.1 Bean的作用域配置49 4.2.2 Bean初始化或銷毀的生命周期回調50 4.2.3 懶加載Bean51 4.2.4 Bean定義的繼承52 4.3 依賴注入的配置53 4.3.1 多個對像的依賴注入53 4.3.2 簡單類型的依賴注入55 4.3.3 集合類型的依賴注入58 4.3.4 內部Bean的依賴注入59 4.3.5 Bean方法的替換59 4.3.6 自動裝配60 4.4 特殊的依賴配置61 4.4.1 depends-on前置依賴配置61 4.4.2 方法注入—不同作用域Bean的依賴配置62 4.4.3 循環依賴的解決63 4.5 XML配置進階64 4.5.1 依賴注入配置的簡寫64 4.5.2 多XML配置文件64 4.6 容器與Bean擴展點65 4.6.1 全局與容器生命周期回調65 4.6.2 容器加載定義擴展—BeanFactoryPostProcessor66 4.6.3 容器擴展點—BeanPostProcessor68 4.6.4 Aware接口—獲取容器資源68 4.7 Spring IoC容器綜述70 第5章 基於注解和代碼的配置73 5.1 Java注解73 5.1.1 Java基本注解73 5.1.2 Java注解標準75 5.2 Spring支持的注解類型與開啟方式76 5.2.1 Spring支持的注解類型76 5.2.2 Spring注解功能的開啟方式77 5.3 Spring支持的Java標準注解78 5.3.1 @PostConstruct和@PreDestroy78 5.3.2 @Named—組件注解78 5.3.3 @Resource—依賴注入注解79 5.3.4 @Inject—依賴注入79 5.4 Spring容器配置注解80 5.4.1 @Required—依賴項檢查80 5.4.2 @Autowired—依賴對像的自動裝配81 5.4.3 @Component—組件注解82 5.4.4 @Bean—方法層級的組件注解85 5.5 自動裝配的更多介紹86 5.5.1 自動裝配的required配置86 5.5.2 自動裝配的順序和選擇86 5.5.3 自動裝配的使用89 5.6 基於Java代碼的配置89 5.6.1 @Configuration——配置類注解90 5.6.2 Java代碼配置的容器初始化90 5.6.3 @ComponentScan—組件掃描注解91 5.6.4 @Import—配置類導入注解92 5.7 容器注解彙總92 第6章 Spring測試94 6.1 關於測試94 6.1.1 測試95 6.1.2 集成測試97 6.1.3 測試的一些概念97 6.2 Java測試框架98 6.2.1 JUn測試框架98 6.2.2 JUnit批量測試102 6.2.3 JUnit運行器103 6.2.4 JUnit 4與JUnit 5的比較104 6.2.5 TestNG簡介及與JUnit的比較105 6.3 基於Spring的測試106 6.3.1 JUnit中加入Spring容器進行測試106 6.3.2 Spring測試模塊108 6.3.3 Spring測試模測試的支持109 6.3.4 Spring測試框架111 6.4 Spring測試注解116 6.4.1 Spring測試專用的注解116 6.4.2 測試支持的標準注解119 6.4.3 基於JUnit 4支持的注解121 6.4.4 基於JUnit Jupiter(JUnit 5)支持的注解123 6.5 測試框架注解彙總125 *2篇 Spring MVC框架 第7章 Spring Web MVC概述128 7.1 HTTP Web基礎知識128 7.1.1 HTML與HTTP128 7.1.2 HTTP請求類型129 7.1.3 MIME類型129 7.1.4 狀態碼130 7.2 Java Web開發131 7.2.1 Servlet技術131 7.2.2 JSP技術138 7.2.3 MVC模式141 7.3 Spring MVC介紹與實例141 7.3.1 Spring MVC框架處理流程142 7.3.2 Spring Web快速Demo實例143 7.4 Spring MVC技術細節146 7.4.1 DispatcherServlet—中央控制器146 7.4.2 HandlerMapping—處理器映射器148 7.4.3 HandlerAdapter—處理器適配器150 7.4.4 視圖與視圖解析器153 7.5 Spring MVC注解配置155 7.5.1 組件與依賴注解156 7.5.2 請求映射與參數注解156 7.5.3 @ModelAttribute模型屬性注解160 7.6 基於代碼配置的Spring MVC項目162 7.6.1 Java代碼進行Spring MVC的容器配置162 7.6.2 Java代碼替代web.xml文件的入口配置163 7.7 MVC注解彙總164 第8章 數據類型的轉換、驗證與異常處理166 8.1 類型轉換166 8.1.1 屬性編輯器:PropertyEditor166 8.1.2 轉換器服務:ConversionService168 8.1.3 類型轉換在容器中的使用173 8.2 數據綁定176 8.2.1 Bean封裝器:BeanWrapper176 8.2.2 數據綁定器:DataBinder與WebDataBinder178 8.2.3 綁定器初始化注解:@InitBinder180 8.2.4 HTTP消息轉換器:HttpMessageConverter181 8.3 數據驗證184 8.3.1 JavaBean標準校驗184 8.3.2 Spring核心容器的驗證186 8.3.3 Spring MVC容器的驗證188 8.3.4 驗證器配置及增加自定義驗證器189 8.3.5 驗證器使用層級及手動調用191 8.4 Spring MVC異常處理192 8.4.1 Controller類層級異常處理:@ExceptionHandler192 8.4.2 全局的異常處理:@ControllerAdvice193 8.4.3 XML配置異常處理194 第9章 Spring MVC進階195 9.1 靜態資源的放行195 9.1.1 配置Servlet處理靜態資源196 9.1.2 配置放行動態資源196 9.1.3 配置放行動態資源197 9.2 父子容器197 9.2.1 Spring的父子容器197 9.2.2 Spring MVC的父子容器200 9.2.3 Spring MVC父子容器的配置202 9.3 Spring MVC與JSON204 9.3.1 JSON介紹204 9.3.2 Java對JSON的支持206 9.3.3 Spring MVC使用JSON210 9.4 Spring MVC與REST214 9.4.1 REST的概念與應用214 9.4.2 Spring MVC REST服務端:@RestController218 9.4.3 Spring MVC REST客戶端:RestTemplate219 9.5 文件上傳223 9.5.1 多部分表單數據類型:multipart/form-data223 9.5.2 Java文件上傳功能實現方式225 9.5.3 Spring MVC 文件上傳功能的實現方式228 9.5.4 Spring MVC文件上傳*佳實踐231 9.6 國際化233 9.6.1 Java國際化233 9.6.2 Spring國際化236 9.6.3 Spring MVC國際化237 9.6.4 語言環境解析器:LocaleResolver239 9.6.5 Spring MVC語言環境的動態修改244 9.6.6 Spring MVC國際化的使用245 *10章 Spring MVC測試框架247 10.1 Spring MVC測試概述247 10.1.1 Spring MVC的測試方式247 10.1.2 Spring Web測試實例與測試的整體框架248 10.2 模擬應用服務(MockMvc)及其構建器251 10.2.1 獨立測試MockMvc構建器:StandaloneMockMvcBuilder251 10.2.2 集成測試MockMvc構建器:DefaultMockMvcBuilder252 10.3 模擬請求構造器254 10.3.1 模擬請求參數傳遞255 10.3.2 模擬請求構造器的請求相關設置257 10.4 結果操作258 10.4.1 結果操作接口:ResultActions259 10.4.2 結果匹配器接口:ResultMatcher260 10.4.3 結果處理器:MockMvcResultHandlers265 10.4.4 獲取MvcResult後自定義驗證266 10.5 Spring MVC測試框架之其他266 10.5.1 測試代碼簡寫267 10.5.2 獨立測試的依賴處理268 10.5.3 文件上傳測試268 第3篇 數據技術 *11章 數據庫與Java數據訪問技術272 11.1 關繫型數據庫介紹272 11.1.1 關繫型數據庫產品272 11.1.2 關繫型數據庫及其對像273 11.1.3 關繫型數據庫事務274 11.1.4 SQL語言276 11.2 MySQL數據庫276 11.2.1 MySQL數據類型277 11.2.2 基於MySQL的基本SQL語句279 11.2.3 MySQL*級對像與功能281 11.3 Java數據訪問基本技術284 11.3.1 JDBC數據訪問284 11.3.2 Java數據庫連接池288 11.3.3 線程安全的數據庫連接293 11.4 ORM框架介紹294 11.4.1 Java常見的ORM框架294 11.4.2 Hibernate開發步驟與實例295 11.5 JPA—Java持久層應用接口298 11.5.1 JPA的主要內容299 11.5.2 JPA的主要概念和類301 11.5.3 JPA開發規範與步驟303 11.5.4 JPA之Hibernate實現實例303 11.5.5 JPA之Eclipse Link實現實例305 *12章 MyBatis入門310 12.1 MyBatis介紹與快速入門實例310 12.1.1 MyBatis介紹310 12.1.2 MyBatis快速入門實例311 12.2 MyBatis核心接口和類314 12.2.1 SqlSession(SQL會話接口)315 12.2.2 SqlSessionFactory(SQL會話工廠接口)316 12.2.3 SqlSessionFactoryBuilder(SQL會話工廠構建類)316 12.2.4 Configuration(配置類)317 12.3 MyBatis XML全局配置文件318 12.3.1 配置文件的結構318 12.3.2 環境配置319 12.3.3 屬性與屬性文件配置321 12.3.4 映射引用配置322 12.3.5 MyBatis特性設置323 12.4 XML映射文件配置325 12.4.1 12.4.2 12.4.3 、和語句配置336 12.4.4 可重用SQL代碼段()338 *13章 MyBatis進階339 13.1 MyBatis內部運作解密339 13.1.1 SqlSessionFactory的構建和類型340 13.1.2 會話工廠創建會話的流程340 13.1.3 Mapper映射器接口的運作方式341 13.1.4 SqlSession和Executor如何執行SQL語句342 13.2 MyBatis全局配置進階343 13.2.1 類型處理器343 13.2.2 類型別名345 13.2.3 對像工廠346 13.2.4 插件346 13.2.5 數據庫提供商配置347 13.3 動態SQL348 13.3.1 條件判斷 和條件語句348 13.3.2 多分支選擇標簽、和349 13.3.3 循環標簽349 13.4 MyBatis日志350 13.4.1 Commons Logging +Log4j2搭建MyBatis日志方案實例351 13.4.2 日志開啟層級352 13.5 MyBatis緩存353 13.5.1 一級緩存354 13.5.2 二級緩存356 13.5.3 緩存補充介紹359 13.6 MyBatis其他360 13.6.1 基於注解映射及SQL語句構造器360 13.6.2 Oracle自增長主鍵解決:selectKey361 13.6.3 使用C3P0連接池363 *14章 Spring數據訪問與事務管理364 14.1 Spring JDBC模板類364 14.1.1 JdbcTemplate的使用364 14.1.2 JdbcTemplate使用連接池數據源366 14.2 Spring DAO支持368 14.2.1 DAO的概念368 14.2.2 基於JdbcTemplate的DAO層實例369 14.2.3 Spring DAO支持類:DaoSupport371 14.3 Spring整合ORM框架及JPA372 14.3.1 Spring與Hibernate的整合概覽373 14.3.2 Spring與JPA的整合概覽374 14.4 Spring事務處理375 14.4.1 Java事務處理375 14.4.2 Spring事務管理377 14.4.3 基於數據源事務管理器的編程式事務380 14.4.4 基於數據源事務管理器的聲明式事務385 14.4.5 Spring MVC事務處理其他390 第4篇 SSM整合開發 *15章 SSM整合概述396 15.1 SSM整合綜述396 15.1.1 開發架構選擇396 15.1.2 SSM整合技術選型與導入398 15.1.3 集成開發平臺與開發工具403 15.1.4 配置開發與注解開發409 15.2 Spring與Spring MVC整合410 15.2.1 配置Spring MVC父子容器410 15.2.2 核心容器配置application.xml411 15.2.3 Spring MVC容器配置spring-mvc.xml412 15.3 Spring與MyBatis整合414 15.3.1 整合的主要組件類414 15.3.2 SSM整合方式415 15.3.3 映射器配置417 15.3.4 Spring與MyBatis整合事務管理418 15.4 SSM異常整合與處理421 15.4.1 Spring MVC異常處理的接口和類422 15.4.2 Spring MVC異常處理器配置425 15.4.3 JSON類型返回的異常處理器428 15.5 Java日志與SSM日志整合430 15.5.1 Log4j和Log4j2430 15.5.2 Log4j2使用介紹433 15.5.3 Log4j與JCL整合436 15.5.4 SSM日志整合438 *16章 SSM整合實例442 16.1 項目需求、繫統架構與繫統設計442 16.1.1 項目需求442 16.1.2 繫統架構443 16.1.3 繫統設計446 16.2 項目框架搭建(SSM+Ext JS)447 16.2.1 Eclipse+Maven創建多模塊項目447 16.2.2 後端項目(daport-backend)依賴和配置455 16.2.3 前端項目(daport-front)搭建464 16.2.4 前後端整合思路及開發方式468 16.3 daport-backend後端開發471 16.3.1 使用ERMaster設計表並產生SQL471 16.3.2 MyBatis Generator產生實體類、映射接口及映射配置文件473 16.3.3 用戶請求服務與開發474 16.4 daport-frontend前端開發478 16.4.1 前端項目目錄478 16.4.2 主頁面開發478 16.4.3 用戶管理頁面開發482 16.5 前後端整合開發486 16.5.1 繫統登錄486 16.5.2 國際化488 16.5.3 用戶管理前後端的整合490 16.5.4 文件上傳491 16.5.5 統一異常處理493 16.6 測試、調試與部署494 16.6.1 後端daport-backend代碼測試494 16.6.2 後端daport-backend調試496 16.6.3 前端daport-frontend調試498 第5篇 *級開發技術 *17章 Spring AOP與MVC攔截器502 17.1 AOP介紹及Java代理502 17.1.1 AOP的應用場景及基本概念503 17.1.2 Java代理實現504 17.1.3 CGLIB動態代理庫507 17.2 Java AOP框架—AspectJ509 17.2.1 使用Eclipse AJDT開發AspectJ實例509 17.2.2 AspectJ切點執行表達式510 17.2.3 AspectJ注解開發511 17.3 Spring AOP框架解密512 17.3.1 Spring AOP框架及代理實現512 17.3.2 代理工廠Bean:ProxyFactoryBean515 17.3.3 增強器:Advisor517 17.3.4 基於XML的AOP配置520 17.3.5 基於注解的AOP配置522 17.3.6 Spring AOP與AspectJ的關繫524 17.4 MVC攔截器與過濾器524 17.4.1 Spring MVC攔截器524 17.4.2 Servlet 過濾器與Spring實現的過濾器526 17.4.3 過濾器與攔截器的關繫529 *18章 Spring Security框架與多線程531 18.1 Spring Security概述與Web請求認證531 18.1.1 Spring Security快速入門示例531 18.1.2 Spring Security用戶認證配置標簽534 18.1.3 Spring Security密碼加密537 18.2 Spring Security方法層級授權538 18.2.1 單個Bean方法保護的配置538 18.2.2 方法的安全注解539 18.2.3 全局安全切點配置541 18.3 Spring Security機制解密541 18.3.1 Spring Security實現機制541 18.3.2 AuthenticationManager(認證管理器)核心接口及運作原理542 18.3.3 AccessDecisionManager(訪問決策管理器)544 18.3.4 SecurityMetadataSource數據源)545 18.3.5 SecurityInterceptor(安全攔截器)546 18.4 Spring Security代碼配置與測試548 18.4.1 Spring Security基於代碼配置549 18.4.2 Spring Securi測試551 18.5 Spring Security實戰554 18.5.1 自定義登錄頁面554 18.5.2 常見錯誤及解決方法555 18.6 多線程與線程安全556 18.6.1 Java線程創建與執行557 18.6.2 Java線程安全問題558 18.6.3 共享變量的線程安全解決方式559 18.6.4 ThreadLocal解決線程安全561 18.6.5 Spring中ThreadLocal的使用563 |