第1章 Java EE应用 1
1.1 Java EE应用概述 2
1.1.1 Java EE应用的分层模型 2
1.1.2 Java EE应用的组件 3
1.1.3 Java EE应用的结构和优势 4
1.2轻量级Java EE应用相关技术 4
1.2.1 JSP、 Servlet和JavaBean及替代技术 4
1.2.2 MyBatis 3及替代技术 5
1.2.3 Spring 5及替代技术 6
1.2.4使用开源框架的好处 7
1.3本章小结 7
第2章 Spring MVC简介 8
2.1 MVC思想概述 9
2.1.1传统Model l和Mode12 9
2.1.2 MVC思想及其优势 10
2.2 Struts 2和Spring MVC 11
2.2.1 Spring MVC的优势 11
2.2.2 Spring MVC和Struts 2的区别 11
2.3开发第一个Spring MVC应用 12
2.3.1 Spring的下载和安装 12
2.3.2 Spring MVC的DispatcherServlet 13
2.3.3基于Controller接口的控制器 14
示例:第一个Spring MVC应用 14
示例:基于注解的控制器 18
2.4详解DispatcherServlet 20
2.5 Spring MVC执行的流程 22
2.5.1 Spring MVC应用的开发步骤 22
2.5.2 Spring MVC执行的流程 24
2.6本章小结 25
第3章 Spring MVC的常用注解 26
3.1@Controller注解 27
示例:@Controller注解的使用 27
3.2@RequestMapping注解 29
3.2.1@RequestMapping注解简介 29
3.2.2请求处理方法中可出现的参数类型 32
3.2.3请求处理方法可返回的类型 33
3.2.4 Model和ModelMap 33
示例:Model和ModelMap的使用 34
3.2.5 ModelAndView 35
示例:ModelAndView的使用 35
3.2.6页面转发 35
3.3@RequestParam注解 36
示例:@RequestMapping和@RequestParam注解的使用 37
3.4@PathVariable注解 41
3.5@MatrixVariable注解 42
3.6@CrossOrigin注解 42
示例:@PathVariable注解和 43
@MatrixVariable注解的使用 43
示例:@CrossOrigin注解的使用 45
3.7@RequestHeader注解 46
示例:@RequestHeader注解的使用 47
3.8@CookieValue注解 48
示例:@CookieValue注解的使用 49
3.9@RequestAttribute注解 50
3.10@SessionAttribute注解 50
示例:@RequestAttribute注解和@SessionAttribute注解的使用 51
3.11@SessionAttributes注解 53
示例:@SessionAttributes注解的使用 53
3.12@ModelAttribute注解 55
示例:@ModelAttribute注解的使用 55
3.13@RequestBody注解 62
3.13.1 HttpMessageConverter〈T〉接口 62
3.13.2转换JSON数据 64
示例:@RequestBody接收JSON格式的数据 65
示例:自定义HttpMessageConverter接收JSON格式的数据 68
3.14@ResponseBody注解 70
示例:@ResponseBody返回JSON格式的数据 70
示例:自定义HttpMessageConverter返回JSON格式的数据 72
3.15转换XML数据 72
示例:接收XML格式的数据 72
示例:返回XML格式的数据 75
3.16@RestController注解 76
示例:@RestController注解的使用 76
3.17 Spring MVC的异常处理 77
3.17.1 Spring MVC异常处理接口以及实现类 77
示例:SimpleMappingExceptionResolver处理异常 78
3.17.2@ResponseStatus注解 82
示例:@ResponseStatus处理异常 82
3.17.3@ExceptionHandle注解 84
示例:@ExceptionHandler处理异常 84
3.17.4@ControllerAdvice注解 87
示例:@ControerAdvice处理异常 87
3.17.5@RestContorerAdvice注解 91
示例:@estContorer Advice注解的使用 91
3.18本章小结 92
第4章 Spring MVC的标签库 93
4.1表单标签库 94
4.1.1 form标签 94
4.1.2 input标签 95
示例:form和input标签的使用 95
4.1.3 password标签 97
4.1.4 hidden标签 98
4.1.5 textarea标签 98
4.1.6 checkbox标签 99
示例:checkbox标签的使用 99
4.1.7 checkboxes标签 101
示例:checkboxes标签的使用 101
4.1.8 radiobutton标签 105
示例:radiobutton标签的使用 105
4.1.9 radiobuttons标签 106
示例:radiobuttons标签的使用 107
4.1.10 select标签 108
4.1.11 option标签 109
4.1.12 options标签 109
示例:select、 option和options标签的使用 109
4.1.13 errors标签 113
示例:errors标签的使用 114
4.2本章小结 116
第5章 Spring MVC的国际化 117
5.1 Spring MVC国际化的相关知识 118
5.1.1 messageSource接口 118
5.1.2 localeResolver接口 118
5.1.3 message标签 119
5.2 Spring MVC的国际化处理 119
5.2.1 AcceptHeaderLocaleResolver 119
示例:基于浏览器请求的国际化实现 119
5.2.2 SessionLocaleResolver 122
示例:基于HttpSession的国际化实现 123
5.2.3 CookieLocaleResolver 125
示例:基于Cookie的国际化实现 125
5.3本章小结 127
第6章 Spring MVC的数据转换、格式化和数据校验 128
6.1数据绑定流程 129
6.2数据转换 129
6.2.1 ConversionService 129
6.2.2 Spring支持的转换器 130
示例:使用ConversionService转换数据 131
示例:使用@InitBinder添加自定义编辑器转换数据 134
示例:使用WebBindingInitializer注册全局自定义编辑器转换数据 135
6.2.3多种转换器的优先顺序 135
6.3数据格式化 136
示例:使用Formatter格式化数据 137
示例:使用FormatterRegistrar注册Formatter 138
示例:使用AnnotationFormatterFactory〈AextendsAnnotatico格式化数据 139
6.4数据校验 142
6.4.1 Spring的Validation校验框架 143
示例:测试Spring的Validation校验 143
6.4.2 JSR 303校验 146
示例:测试JSR 303校验 147
6.5本章小结 152
第7章 Spring MVC的文件上传下载和拦截器机制 153
7.1文件上传 154
示例: Spring MVC的文件上传 154
示例:使用对象接收上传文件 157
7.2文件下载 158
示例:Spring MVC的文件下载 158
7.3拦截器 160
7.3.1 Handlerlnterceptor接口 160
示例:拦截器实现用户权限验证 161
7.4本章小结 164
第8章 MyBatis简介 165
8.1 ORM和MyBatis 166
8.1.1对象/关系数据库映射(ORM) 166
8.1.2基本映射方式 167
8.1.3流行的ORM框架简介 168
8.1.4 MyBatis概述 168
8.2 MyBatis入门 169
8.2.1 MyBatis下载和安装 169
示例:MyBatis的数据库操作入门 170
8.3本章小结 175
第9章 MyBatis的基本用法 176
9.1 MyBatis体系结构 177
9.1.1 SqlSessionFactory 177
9.1.2 SqlSession 177
9.2深入My Batis的配置文件 179
9.2.1 MyBatis的配置文件结构 180
9.2.2 properties属性 180
9.2.3 settings设置 181
9.2.4 typeAliases类型命名 183
9.2.5 type-Handlers类型处理器 184
9.2.6 objectFactory对象工厂 185
9.2.7 environments配置环境 185
9.2.8 mapper映射器 187
9.3 MyBatis日志信息配置 188
9.3.1 log4j.properties配置日志 188
9.3.2 log4j.xml配置日志 189
9.4深入Mapper XML映射文件 190
9.4.1 select 191
9.4.2 insert、 update和delete 192
9.4.3 sql 194
9.4.4参数(Parameters) 195
示例:测试select、 insert、 update和delete操作 195
9.4.5 ResultMaps 200
示例:测试ResultMaps 201
9.5本章小结 208
第10章 深入使用MyBatis 209
10.1 MyBatis关联映射 210
10.1.1一对一 210
示例:OneToOneTest 210
10.1.2一对多 213
示例:OneToManyTest 213
10.1.3多对多 218
示例:ManyToManyTest 218
10.2 MyBatis动态SQL 225
示例:DynamicSQLTest 225
10.2.1 if 226
10.2.2 choose(when、 otherwise) 229
10.2.3 where 230
10.2.4 set 232
10.2.5 foreach 233
10.2.6 bind 234
10.3 MyBatis调用存储过程 234
示例:MyBatis调用存储过程 235
10.3.1插入数据 235
10.3.2查询数据返回集合 237
10.3.3根据id查询数据返回对象 238
10.3.4修改数据 239
10.3.5删除数据 241
10.4 MyBatis事务管理 242
10.4.1事务的概念 242
10.4.2 Transaction接口 243
10.4.3事务的配置创建和使用 243
10.5 MyBatis缓存机制 247
10.5.1一级缓存(SqlSession级别) 247
示例:OneLevelCacheTest 247
10.5.2二级缓存(mapper级别) 251
示例:TwoLevelCacheTest 251
10.6本章小结 254
第11章 MyBatis的注解配置 255
11.1常用注解 256
11.2注解的使用 256
示例:测试select、 insete、 update和delete操作 257
示例:测试一对一关联 262
示例:测试一对多关联 263
示例:测试多对多关联 265
示例:测试动态SQL 267
示例:测试调用存储过程 274
示例:测试二级缓存 276
11.3本章小结 278
第12章 Spring 5整合MyBatis 3 279
12.1开发环境搭建 280
12.2准备所需的jar包 280
12.3准备数据库资源 280
12.4完成配置文件 281
12.5持久层功能实现 283
12.6服务层功能实现 284
12.7控制层功能实现 286
12.8 JSP页面 288
12.9测试Spring 5整合MyBatis 3 289
12.10本章小结 290
第13章 实战项目:人事管理系统 291
13.1项目简介及系统结构 292
13.1.1系统功能介绍 292
13.1.2相关技术介绍 293
13.1.3系统结构 293
13.1.4系统的功能模块 294
13.2数据表和持久化类 294
13.2.1设计数据库表 294
13.2.2设计持久化实体 296
13.2.3创建持久化实体类 297
13.3实现DAO持久层 303
13.3.1公共常量类 304
13.3.2定义DAO接口 304
13.3.3部署DAO层 318
13.4实现Service持久层 319
13.4.1业务逻辑组件的设计 319
13.4.2实现业务逻辑组件 320
13.4.3事务管理 335
13.4.4部署业务逻辑组件 335
13.5实现Web层 335
13.5.1控制器的处理顺序 335
13.5.2用户管理 339
13.5.3部门管理 342
13.5.4职位管理 345
13.5.5员工管理 348
13.5.6 公告管理 351
13.5.7下载中心 355
13.6本章小结 359
附录A EL表达式和JSTL标签库 360