图书简介:
目 录
第一部分 Java Web开发基础
第1章 搭建Java Web开发环境 2
1.1 基于B/S结构的Web应用 2
1.2 JDK安装与配置 2
1.3 服务器Tomcat下载与安装 3
1.4 Eclipse安装与使用 3
1.4.1 Eclipse下载及创建Dynamic Web Project 3
1.4.2 Eclipse中的编码问题 4
1.4.3 将Tomcat和Eclipse相关联 6
1.4.4 Eclipse自动部署项目到
Tomcat的Webapps目录 7
1.5 MySQL安装配置与使用 9
1.6 PostgreSQL安装与使用 13
1.6.1 PostgreSQL下载与安装 13
1.6.2 使用pgAdmin III连接
PostgreSQL 13
1.6.3 使用pgAdmin III创建
数据库 14
1.7 Navicat Premium安装与使用 14
1.8 本章小结 16
习题 1 17
第2章 Servlet编程 18
2.1 Servlet简介 18
2.2 Servlet基础 19
2.2.1 用记事本写一个Servlet 19
2.2.2 Servlet 体系结构 20
2.2.3 Servlet 接口 20
2.2.4 Servlet 生命周期 21
2.2.5 Servlet 生命周期示例 22
2.3 Servlet API编程常用接口和类 25
2.3.1 GenericServlet类 25
2.3.2 HttpServlet类 26
2.3.3 ServletConfig接口 27
2.3.4 HttpServletRequest
接口 29
2.3.5 HttpServletResponse
接口 31
2.3.6 ServletContext接口 32
2.4 Servlet处理表单数据 35
2.5 Servlet重定向和请求转发 36
2.5.1 重定向 36
2.5.2 请求转发 37
2.5.3 Servlet中请求转发时
forword()和include()的
区别 38
2.6 Servlet数据库访问 40
2.6.1 JDBC基础 40
2.6.2 创建测试数据 40
2.6.3 访问数据库 40
2.7 Servlet异常处理 41
2.8 异步Servlet 45
2.9 本章小结 46
习题 2 47
第3章 JSP语言基础 48
3.1 JSP基本语法 48
3.1.1 JSP简介 48
3.1.2 JSP运行机制 48
3.1.3 第一个JSP程序 49
3.1.4 JSP指令 49
3.1.5 JSP脚本 51
3.1.6 JSP注释 52
3.2 JSP动作元素 52
3.3 JSP内置对象 53
3.4 JSP综合示例 57
3.5 本章小结 57
习题 3 58
第4章 会话管理 59
4.1 Cookies 59
4.1.1 Cookie剖析 59
4.1.2 在Servlet中操作
Cookie 59
4.1.3 Cookie API 60
4.1.4 使用Cookie示例 60
4.2 HttpSession对象 62
4.2.1 Session简介 62
4.2.2 HttpSession API 62
4.2.3 使用HttpSession示例 63
4.3 URL重写 65
4.3.1 为什么需要URL重写 65
4.3.2 encodeURL()和
encodeRedirectURL() 65
4.3.3 使用URL重写示例 66
4.4 隐藏表单域 66
4.5 本章小结 66
习题 4 67
第5章 EL和JSTL 68
5.1 JSP表达式语言 68
5.1.1 EL简介 68
5.1.2 EL的运算符和优先级 69
5.1.3 EL隐式对象 70
5.1.4 定义和使用EL函数 74
5.2 JSP标准标签库 75
5.2.1 JSTL简介 75
5.2.2 JSTL安装与配置 76
5.2.3 核心标签库 76
5.3 本章小结 79
习题 5 80
第6章 过滤器与监听器 81
6.1 Servlet过滤器 81
6.1.1 Filter工作原理 81
6.1.2 Filter核心接口 81
6.1.3 Filter生命周期 82
6.1.4 Filter配置 82
6.1.5 Filter应用 83
6.2 Servlet监听器 86
6.2.1 Servlet监听器概述 86
6.2.2 Servlet上下文监听 86
6.2.3 HTTP会话监听 89
6.2.4 Servlet请求监听 92
6.3 本章小结 94
习题 6 94
第7章 AJAX技术 95
7.1 实现AJAX应用的一般步骤 95
7.2 使用XMLHttpRequest对象 96
7.2.1 创建XMLHttpRequest
对象 96
7.2.2 XMLHttpRequest对象的
常用属性和事件 96
7.2.3 XMLHttpRequest对象的
常用方法 97
7.3 AJAX示例 98
7.3.1 更改文本内容 98
7.3.2 查询项目信息 100
7.3.3 验证注册邮箱格式和
唯一性 101
7.4 本章小结 104
习题 7 104
第8章 Maven 105
8.1 初识Maven 105
8.2 Maven的安装和配置 107
8.3 Maven使用 110
8.4 坐标和依赖 111
8.5 本章小结 112
习题 8 113
第9章 jQuery EasyUI 114
9.1 jQuery基础 114
9.1.1 初识jQuery 114
9.1.2 jQuery选择器 116
9.1.3 jQuery事件 116
9.1.4 jQuery AJAX 117
9.2 jQuery EasyUI 120
9.3 jQuery EasyUI布局 121
9.3.1创建边框布局 121
9.3.2 在面板中创建复杂
布局 122
9.3.3 创建折叠面板 123
9.3.4 创建标签页 124
9.3.5 动态添加标签页 124
9.4 jQuery EasyUI数据网格 125
9.4.1 转换HTML表格为
数据网格 125
9.4.2 取得选中行数据 126
9.4.3 创建复杂工具栏 127
9.4.4 自定义分页 129
9.5 本章小结 130
习题 9 130
第二部分 MyBatis
第10章 MyBatis入门 132
10.1 从JDBC到MyBatis 132
10.2 第一个MyBatis示例 134
10.2.1 创建Maven项目 134
10.2.2 准备数据 136
10.2.3 MyBatis配置 136
10.2.4 创建实体类 137
10.2.5 创建映射接口和SQL
映射文件 138
10.2.6 配置Log4j 138
10.2.7 测试 138
10.3 MyBatis框架原理 139
10.3.1 MyBatis整体架构 140
10.3.2 MyBatis运行原理 140
10.4 MyBatis核心组件的
生命周期 142
10.4.1 SqlSessionFactory
Builder 142
10.4.2 SqlSessionFactory 142
10.4.3 SqlSession 142
10.4.4 Mapper Instances 142
10.5 本章小结 143
习题 10 143
第11章 配置和映射 144
11.1 示例:实现表数据的增、删、
改、查 144
11.2 MyBatis主配置文件 149
11.3 XML映射文件 153
11.4 高级结果映射 160
11.4.1 示例说明 160
11.4.2 一对一映射 164
11.4.3 一对多映射 167
11.4.4 多对多关联 171
11.5 本章小结 175
习题 11 175
第12章 动态SQL 176
12.1 示例:使用动态SQL 176
12.2 if 178
12.3 choose、when、otherwise 181
12.4 where、set、trim 182
12.5 foreach 187
12.6 bind 188
12.7 本章小结 189
习题 12 189
第13章 MyBatis其他 190
13.1 MyBatis注解方式 190
13.1.1 使用注解方式实现表
数据的增删改查 190
13.1.2 使用注解的动态
SQL 194
13.2 MyBatis缓存配置 200
13.2.1 一级缓存(SqlSession
层面) 200
13.2.2 二级缓存(SqlSession
Factory层面) 203
13.3 本章小结 206
习题 13 207
第14章 MyBatis应用 208
14.1 示例总体介绍 208
14.1.1 任务说明和准备数据 208
14.1.2 总体框架 209
14.1.3 程序主要流程 209
14.2 典型代码及技术要点 210
14.2.1 通用功能包的类实现 210
14.2.2 控制层 210
14.2.3 业务层及使用
FastJson 211
14.2.4 数据层及JNDI
数据源 213
14.2.5 部署发布 215
14.2.6 使用Jackson和手工
拼凑JSON 215
14.3 本章小结 215
习题 14 216
第三部分 Spring MVC
第15章 Spring基础 218
15.1 Spring入门 218
15.1.1 Spring概述 218
15.1.2 使用Spring容器 221
15.2 依赖注入 223
15.3 Spring容器中的Bean 227
15.4 容器中Bean的生命周期 230
15.5 两种后处理器 231
15.5.1 Bean后处理器 231
15.5.2 容器后处理器 232
15.6 装配Spring Bean 232
15.6.1 通过XML配置装配
Bean 233
15.6.2 通过注解装配Bean 233
15.6.3 自动装配和精确装配 235
15.7 Spring的AOP 236
15.8 本章小结 237
习题 15 237
第16章 Spring MVC入门 238
16.1 Spring MVC概述 238
16.2 Spring MVC入门示例1:Hello,
Spring MVC! 238
16.2.1 创建Maven项目 238
16.2.2 pom.xml 239
16.2.3 Web应用部署描述文件
Web.xml 241
16.2.4 Spring MVC
配置文件 242
16.2.5 基于Controller接口的
控制器 242
16.2.6 视图 243
16.2.7 部署发布项目 243
16.3 Spring MVC入门示例2:
表单提交 243
16.3.1 创建Maven项目 243
16.3.2 编码过滤器 244
16.3.3 表单提交及相应配置 245
16.3.4 测试应用 246
16.4 Spring MVC入门示例3:
基于注解 247
16.4.1 创建Maven项目 247
16.4.2 创建控制器并添加
注解 247
16.4.3 视图解析器 248
16.4.4 测试应用 248
16.5 Spring MVC的工作流程 249
16.6 本章小结 250
习题 16 250
第17章 基于注解的控制器 251
17.1 Spring MVC常用注解 251
17.1.1 @Controller和
@RequestMapping 251
17.1.2 @Autowired和
@Service 253
17.1.3 @RequestParam和
@PathVariable 253
17.1.4 @CookieValue和
@RequestHeader 254
17.2 在Spring MVC中处理模型
数据 255
17.2.1 数据模型 255
17.2.2 ModelAndView 256
17.2.3 Map及Model 257
17.2.4 @SessionAttributes 258
17.2.5 @ModelAttribute 259
17.3 基于注解的控制器示例1 263
17.3.1 创建AnnotationDemo1
工程 263
17.3.2 创建控制器并添加
注解 263
17.3.3 测试应用 264
17.4 基于注解的控制器示例2 264
17.4.1 创建AnnotationDemo2
工程 264
17.4.2 应用@Autowired和
@Service进行依赖
注入 265
17.4.3 重定向 267
17.4.4 测试应用 267
17.5 本章小结 268
习题 17 268
第18章 拦截器、数据转换和格式化 269
18.1 Spring MVC的拦截器 269
18.1.1 拦截器的定义和注册 269
18.1.2 拦截器的执行流程 271
18.1.3 多个拦截器执行的顺序 274
18.1.4 拦截器应用 275
18.2 Spring MVC的数据转换和
格式化 278
18.2.1 Spring MVC消息转换
流程 279
18.2.2 Spring MVC的数据
绑定 279
18.2.3 Spring MVC的数据
转换 284
18.2.4 Spring MVC的数据
格式化 287
18.2.5 JSON格式的数据
转换 289
18.3 本章小结 295
习题 18 295
第19章 Spring MVC其他 296
19.1 Spring MVC的表单标签库 296
19.2 表单验证 307
19.2.1 Spring验证 308
19.2.2 JSR 303验证 310
19.3 Spring MVC的文件上传和
下载 311
19.3.1 文件上传 311
19.3.2 文件下载 314
19.4 Spring MVC的国际化 315
19.5 本章小结 318
习题 19 318
第20章 Spring MVC+MyBatis应用 319
20.1 项目总体介绍 319
20.1.1 项目简介及任务说明 319
20.1.2 准备数据 320
20.1.3 总体框架 320
20.2 典型代码及技术要点 320
20.2.1 登录模块及Kaptcha
验证码组件 320
20.2.2 系统管理界面 325
20.2.3 系统用户管理 328
20.2.4 功能模块管理 332
20.3 本章小结 333
习题 20 333
参考文献 334
展开
前 言
“蒹葭苍苍,白露为霜。所谓伊人,在水一方……”,新技术、新知识宛若一位美貌典雅的妙龄女子,让人怦然心动。这位妙龄女子就是Spring MVC + MyBatis + Maven。
Spring MVC是一个基于动作的MVC框架。该框架突出了HTTP中的请求/响应特性,在该框架中,用户的每一个请求都声明了一个需要执行的动作。而这主要是通过将每个请求URI映射到一个可执行的方法来实现的。同时,其也将请求参数映射到对应方法的参数上。
Spring MVC与Spring框架集成在一起(如IoC容器、AOP等),具有非常灵活的数据校验、数据转换和格式化,以及数据绑定机制,支持RESTful,提供强大的约定优于配置的契约式编程支持,能够让开发者进行更简洁的Web层的开发。
MyBatis 是支持定制化 SQL、存储过程以及高级映射的优秀的持久层框架。MyBatis 避免了几乎所有的 JDBC 代码和手动设置参数及获取结果集。MyBatis可以对配置和原生Map使用简单的XML或注解,将接口和Java的POJO映射成数据库中的记录。
MyBatis框架的优点在于:①与JDBC相比,减少了50%以上的代码量;②MyBatis是最简单的持久化框架,小巧且简单易学;③MyBatis相当灵活,不会对应用程序或者数据库的现有设计强加任何影响,SQL写在XML里,从程序代码中彻底分离,降低了耦合度,便于统一管理和优化,并可重用;④提供了XML标签,支持编写动态SQL语句;⑤提供了映射标签,支持对象与数据库的ORM映射。
为什么有Maven?构建是程序员每天要做的工作,而且相当长的时间花在了这方面,而Maven可使这一系列的工作完全自动化。人们一直在寻找避免重复的方法,这里的重复有:设计的重复、文档的重复、编码的重复、构建的重复等。而Maven是跨平台的,使用它最大限度地消除了构建的重复。
Maven不仅是构建工具,还是依赖管理工具和项目管理工具,Maven提供了中央仓库,能够帮用户自动下载构件。使用Maven可以进行项目高度自动化构建、依赖管理和仓库管理等。而使用Maven最大的好处就是可以实现依赖管理。
在移动互联网兴起的时代,特别是针对后台开发,越来越多的企业喜欢使用Spring MVC + MyBatis + Maven的组合,Maven也替代Ant成为构建Java Web项目的流行工具。
一般来说,对于性能要求较高的互联网项目,通常会选用SSM框架。
本书的编写思路
本书基于以下教学理念编写而成。
1.注重基础
要把Spring MVC + MyBatis + Maven学好,必须要有扎实的基本功,这也就是本书第一部分的内容—Java Web开发基础,主要包括Servlet编程、JSP基础、会话管理、EL和JSTL、过滤器与监听器、AJAX技术等内容。同样,要想把“Java Web开发基础”学好,就要有扎实的Java基础。在学习的旅途中,我们要循序渐进。
2.注重知识(或者技术)格局(框架)
注重技术细节是个好事,但学以致用。这样才会更有学习的动力。无论是Spring MVC 、MyBatis 、Maven,或者Java Web开发基础,其中的哪一部分拿出来都可以是一本书的内容,或者是一学期的课程。但一旦我们的技术格局有了,骨架有了,血肉是可以逐渐丰满起来的。学生一旦产生兴趣,技术(或者知识)细节方面的,他自己会努力学会并加以运用的。这样(同时)还会培养他自己的自学能力。这也是本书集“Java Web开发基础 + MyBatis + Spring MVC + Maven”于一体,作为《Web应用开发》课程主要教学内容的原因。
3.注重编程实践
本书的编程实例很多,限于篇幅,书中的一些示例代码往往只是核心代码,并不是全部的源程序。读者需要到源码包里仔细地阅读代码,以掌握相应的知识(或技能)。要成为优秀的程序员,编写相当数量的代码还是必要的。设计模式是在代码重构的过程中凸现出来的。所以,编写大量代码、注重编程实践,也为以后成为优秀的架构师打下了基础。
4.注重学习者自身的努力和悟性
“师傅领进门,修行在个人”,要成为优秀的软件工程师以致架构师,尤其需要个人的勤奋努力及悟性。如果在学习的过程中,学习者态度消极、被动、有惰性,那么谁也帮不上忙。
5.注重能力培养
“授人以鱼不如授人以渔”,但就编者的教学体会而言,实际上大多数学生喜欢的是“鱼”,而不是“渔”。所以,在教学实践中,恰如其分的引导是非常必要的。学生的“娇气”对学生以后的发展并没有多大好处。
“Rome was not build in a day!”,能力的培养需要一个过程,虽然未必是“宝剑锋从磨砺出,梅花香自苦寒来”,但还是需要大量的编程实践、代码重构和反思(“悟”),经过长时间的潜移默化来逐渐习得。
在教学过程中,更多的需要是“随风潜入夜,润物细无声”。
要说明的是,本书的定位是——卓越工程师培养创新教材,不仅面向在校学生,还面向广大Java程序员、技术人员和培训机构等。
给授课教师的教学建议(参考纸质图书所示)。
致谢
本书由韩冬(苏州大学)负责编制提纲及主要撰写工作,参与本书编写工作的还有张建、曹国平、肖广娣、李炜、李家伟、胡楠等,在此一并表示感谢。
在编写本书过程中,编者参考、借鉴了很多IT技术专家、学者的相关著作,对于引用的段落或文字尽可能一一列出,谨向各位IT技术专家、学者一并表示感谢!
本书的配套资源中,提供了所有章节程序的源代码、配套PPT、习题解答和拓展学习资源(包括HTML、CSS、JavaScript基础内容等),读者可登录华信教育资源网(http://www.hxedu.com.cn)进行下载使用。
鉴于编者水平有限,书中难免存在不足和错误之处,敬请专家和读者提出宝贵意见和建议,以便再版时改进。
韩 冬
展开