本書介紹了軟件項目開發(fā)中需要遵循的基本設計原則及經(jīng)典軟件設計模式,重點講解了Spring、Spring MVC、MyBatis(SSM)框架的實現(xiàn)原理、關鍵技術、實際應用,以及其與典型軟件設計模式的融合,并通過兩個項目讓讀者掌握SSM框架的整合應用,體會軟件架構設計的重要性。 本書理論與實踐相結合,在知識點中融合了思政元素,實踐案例由易到難、逐步深入,所有代碼均能上機運行。本書提供教學大綱、電子課件、全部的項目源代碼、實驗設計、習題解答、授課視頻等配套資源,讀者可登錄華信教育資源網(wǎng)(www.hxedu.com.cn)免費下載。 本書既可作為本科院校計算機科學與技術、軟件工程等相關專業(yè)軟件架構設計及Java EE方向課程的教材,以及新一代信息技術現(xiàn)代產(chǎn)業(yè)學院計算機類課程的實踐教材和培訓機構的輔導教材,又可作為Java技術愛好者的學習參考書。
姚登舉,工學博士,生物學博士后,教授,博士生導師;擔任計算機科學與技術學院軟件工程系主任,生物信息計算與數(shù)字健康學科方向帶頭人,校學術委員會委員,校教學指導委員會委員;是中國計算機學會高級會員、中國生物工程學會會員、黑龍江省生物信息學學會會員、中國計算機學會生物信息學專委會執(zhí)行委員、中國生物工程學會計算與生物信息專業(yè)委員會委員、黑龍江省計算機學會計算機應用專業(yè)委員會委員、黑龍江省計算機學會智慧醫(yī)療專業(yè)委員會委員、黑龍江省生物信息學學會理事、第九屆全國計算生物學與生物信息學學術會議(NCCBB)程序委員、國家自然科學基金項目評審專家、Briefings in Bioinformatics、Scientific Reports等期刊審稿專家、iMeta期刊青年編委。主要從事機器學習和生物信息計算研究,聚焦人類復雜疾病相關的分子標志物尤其是非編碼RNA預測算法等研究方向,主持國家自然科學基金面上項目、科技部外國專家項目、黑龍江省自然科學基金面上項目等縱向科研項目7項,主持和參與省級以上教育教學研究項目6項以第一作者或通訊作者發(fā)表學術論文30余篇,其中SCI檢索10余篇。
理論篇
第1章 軟件設計模式導論2
1.1 軟件設計模式概述2
1.1.1 軟件設計模式產(chǎn)生的
背景2
1.1.2 軟件設計模式的基本
要素3
1.2 軟件設計模式的基本原則4
1.2.1 開閉原則4
1.2.2 里氏代換原則5
1.2.3 依賴倒置原則7
1.2.4 單一職責原則10
1.2.5 接口隔離原則11
1.2.6 迪米特法則13
1.2.7 合成復用原則14
1.3 使用軟件設計模式的優(yōu)點16
1.3.1 代碼優(yōu)劣的評價原則17
1.3.2 使用軟件設計模式
帶來的變化17
思考與習題18
第2章 典型軟件設計模式19
2.1 單例模式19
2.1.1 單例模式的特點19
2.1.2 單例模式的優(yōu)缺點19
2.1.3 單例模式的應用場景20
2.1.4 單例模式的實現(xiàn)20
2.2 原型模式22
2.3 工廠模式23
2.3.1 簡單工廠模式24
2.3.2 工廠方法模式25
2.3.3 抽象工廠模式26
2.4 建造者模式29
2.5 代理模式33
2.5.1 代理模式的應用場景34
2.5.2 代理模式的主要優(yōu)點34
2.5.3 代理模式的簡單示例34
2.6 MVC設計模式35
2.6.1 MVC設計模式的由來36
2.6.2 MVC設計模式在Java Web開發(fā)中的應用36
2.6.3 MVC設計模式的
工作原理37
2.6.4 MVC設計模式的
優(yōu)點37
思考與習題39
第3章 認識軟件架構40
3.1 軟件架構概述40
3.1.1 軟件架構產(chǎn)生的背景40
3.1.2 軟件架構的定義41
3.1.3 軟件架構的應用42
3.1.4 軟件架構的一般特性43
3.2 感受身邊的架構存在44
3.2.1 交通信號燈控制
系統(tǒng)的架構44
3.2.2 智能手機充電接口的
架構45
3.3 軟件架構的表示46
3.3.1 軟件架構的描述46
3.3.2 基于UML軟件視圖46
3.4 軟件架構的作用49
3.5 常見的軟件架構模式51
3.5.1 分層模式51
3.5.2 客戶端—服務器模式51
3.5.3 瀏覽器—服務器模式52
3.5.4 管道—過濾器模式53
3.5.5 微服務模式54
3.6 軟件架構與軟件框架54
思考與習題56
框架篇
第4章 Spring框架基礎58
4.1 Java企業(yè)級開發(fā)58
4.2 Spring框架概述59
4.2.1 Spring框架的發(fā)展
歷史59
4.2.2 Spring框架的優(yōu)勢60
4.2.3 Spring框架的體系
結構61
4.3 Spring開發(fā)環(huán)境搭建63
4.3.1 安裝JDK63
4.3.2 安裝IDE63
4.3.3 獲取Spring框架64
4.3.4 第一個Spring應用
程序66
思考與練習68
第5章 Spring的控制反轉機制69
5.1 控制反轉的概念69
5.1.1 控制反轉的理解69
5.1.2 Spring中的控制反轉71
5.2 基于XML的配置—Bean
的實例化73
5.2.1 基于默認構造函數(shù)73
5.2.2 基于靜態(tài)工廠74
5.2.3 基于實例工廠75
5.3 基于XML的配置—Bean
的生命周期75
5.3.1 Bean的作用范圍75
5.3.2 延遲初始化77
5.3.3 Bean的初始化方法和
銷毀方法77
5.4 基于XML的配置—基于
setter的屬性注入78
5.4.1 字面值的setter注入78
5.4.2 對象類型的setter注入79
5.4.3 集合類型的setter注入81
5.5 基于XML的配置—基于
構造函數(shù)的屬性注入83
5.5.1 按順序匹配84
5.5.2 按索引匹配85
5.5.3 按類型匹配85
5.5.4 按名稱匹配85
5.5.5 混合匹配86
5.6 基于XML的配置—工廠
方法注入88
5.6.1 工廠方法注入88
5.6.2 工廠方法注入應用
實例88
5.7 基于XML的配置—基于
p命名空間、util命名空間和
c命名空間的屬性注入89
5.7.1 p命名空間89
5.7.2 util命名空間90
5.7.3 c命名空間91
5.8 基于XML的配置—Bean
之間的關系92
5.8.1 繼承92
5.8.2 依賴93
5.9 基于注解的配置94
5.9.1 注冊Bean的注解95
5.9.2 管理Bean的生命周期
的注解95
5.9.3 用于屬性注入的注解96
5.9.4 基于注解的配置應用
實例:三層體系結構
應用101
5.10 基于Java類的配置102
思考與練習104
第6章 Spring的面向切面編程
機制105
6.1 面向切面編程概述105
6.1.1 問題的提出105
6.1.2 面向切面編程的概念106
6.1.3 Spring AOP概述107
6.2 Spring AOP—編程式108
6.2.1 增強110
6.2.2 切面116
6.3 Spring AOP—聲明式120
6.3.1 配置增強120
6.3.2 配置切面122
6.4 Spring AOP—AspectJ123
6.4.1 基于注解124
6.4.2 基于配置127
思考與練習130
第7章 Spring MVC基礎131
7.1 MVC的概念131
7.2 Spring MVC概述132
7.2.1 Spring MVC的
結構和運行原理132
7.2.2 第一個Spring MVC
應用程序132
7.3 請求的響應137
7.3.1 @RequestMapping
注解138
7.3.2 @RequestMapping
注解的成員138
7.4 請求參數(shù)的綁定148
7.4.1 字面值參數(shù)的綁定148
7.4.2 對象類型參數(shù)的綁定149
7.4.3 數(shù)組類型參數(shù)的綁定150
7.4.4 路徑變量152
7.4.5 請求參數(shù)綁定時的
數(shù)據(jù)校驗153
7.5 視圖與視圖的選擇156
7.5.1 視圖與視圖解析器156
7.5.2 視圖的選擇157
7.5.3 配置多個視圖解析器159
思考與練習161
第8章 Spring MVC高級功能162
8.1 攔截器162
8.1.1 攔截器的概念162
8.1.2 使用攔截器162
8.2 異常處理166
8.2.1 異常處理概述166
8.2.2 自定義全局異常
處理器166
8.3 文件上傳下載169
8.3.1 文件上傳169
8.3.2 文件下載174
8.4 靜態(tài)資源訪問175
8.4.1 配置默認Servlet176
8.4.2 注冊DefaultServletHttp
RequestHandler177
8.4.3 配置資源映射177
8.5 JSON數(shù)據(jù)交換和RESTful
應用177
8.5.1 JSON數(shù)據(jù)格式178
8.5.2 Spring MVC中的
JSON數(shù)據(jù)交換179
8.5.3 REST的概念183
8.5.4 編寫RESTful應用183
思考與練習188
第9章 MyBatis框架基礎189
9.1 MyBatis概述189
9.1.1 傳統(tǒng)JDBC的劣勢189
9.1.2 ORM簡介190
9.1.3 MyBatis簡介191
9.1.4 MyBatis的功能架構192
9.1.5 MyBatis的工作流程193
9.1.6 MyBatis的下載與
使用195
9.2 MyBatis重要API簡介196
9.3 MyBatis的配置文件199
9.3.1 properties元素200
9.3.2 settings元素201
9.3.3 typeAliases元素202
9.3.4 typeHandlers元素202
9.3.5 objectFactory元素203
9.3.6 environments元素203
9.3.7 mappers元素204
9.4 第一個MyBatis應用程序204
9.4.1 搭建開發(fā)運行環(huán)境205
9.4.2 創(chuàng)建XML配置文件206
9.4.3 創(chuàng)建類文件207
思考與練習209
第10章 單表的CRUD操作210
10.1 數(shù)據(jù)查詢操作210
10.1.1 結果映射resultMap210
10.1.2 使用selectList()方法
查詢212
10.1.3 多參數(shù)查詢213
10.1.4 動態(tài)查詢215
10.2 使用insert元素添加數(shù)據(jù)221
10.2.1 主鍵由數(shù)據(jù)表
自增長222
10.2.2 主鍵非自增長224
10.3 使用delete元素刪除數(shù)據(jù)224
10.4 使用update元素修改數(shù)據(jù)226
10.5 使用getMapper接口和
工具類簡化代碼編寫228
思考與練習230
第11章 多表關聯(lián)映射231
11.1 關聯(lián)關系基礎231
11.2 一對一關聯(lián)操作232
11.3 一對多關聯(lián)操作236
11.3.1 單向一對多操作236
11.3.2 單向多對一操作240
11.4 多對多關聯(lián)操作241
11.5 使用MyBatis注解246
11.5.1 SQL語句映射注解247
11.5.2 結果集映射注解248
11.5.3 關系映射注解248
11.5.4 注解應用實例249
思考與練習250
實戰(zhàn)篇
第12章 學員信息管理系統(tǒng)252
12.1 項目需求概述252
12.2 項目數(shù)據(jù)庫設計252
12.3 SSM框架整合253
12.3.1 開發(fā)架包的準備253
12.3.2 創(chuàng)建項目資源文件255
12.3.3 web.xml文件配置255
12.3.4 Spring配置256
12.3.5 Spring MVC配置258
12.3.6 MyBatis配置259
12.4 項目的主要功能實現(xiàn)259
12.4.1 學員信息管理的
實現(xiàn)259
12.4.2 教練信息管理的
實現(xiàn)268
思考與練習269
第13章 數(shù)字化社區(qū)信息管理系統(tǒng)270
13.1 項目需求概述270
13.2 項目數(shù)據(jù)庫設計271
13.2.1 權限管理數(shù)據(jù)表
設計271
13.2.2 流程管理數(shù)據(jù)表
設計272
13.2.3 具體業(yè)務管理
數(shù)據(jù)表設計273
13.3 項目整體架構設計274
13.3.1 代碼整體結構設計274
13.3.2 前后端分離設計275
13.3.3 實體關系映射設計278
13.3.4 系統(tǒng)可擴展性設計283
13.4 項目主要功能的實現(xiàn)288
13.4.1 居民信息管理的實現(xiàn)288
13.4.2 重點人群管理的實現(xiàn)290
13.5 本案例的啟發(fā)293
思考與練習294
參考文獻295