第一部分 简介与环境 3
第1章 Web应用开发基础——万丈高楼平地起 3
1.1 计算机网络基础知识 3
1.1.1 计算机网络 3
1.1.2 Internet 4
1.1.3 TCP/IP 5
1.2 IP地址、域名和URL 5
1.2.1 IP地址 5
1.2.2 域名 6
1.2.3 URL 7
1.3 Web概述 9
1.3.1 WWW(万维网) 9
1.3.2 什么是网页 9
1.3.3 构成网页的基本元素 10
1.3.4 网页的分类 13
1.4 Web开发与运行环境概述 14
1.4.1 简单的Web应用开发运行环境 14
1.4.2 虚拟的Web应用开发运行环境 15
1.4.3 几种Web动态网页开发技术 15
1.4.4 常用的Web动态网页开发软件 18
1.5 JSP及其相关技术介绍 21
1.5.1 Java语言 21
1.5.2 Servlet技术 21
1.5.3 JavaBean技术 22
1.5.4 JSP开发与运行环境 22
1.5.5 JSP运行机制 23
1.6 习题 24
第2章 搭建JSP开发运行环境——工欲善其事,必先利其器 25
2.1 JSP开发运行环境及安装准备工作 25
2.2 JSP开发运行环境安装与配置 26
2.2.1 JDK的安装与配置 26
2.2.2 MyEclipse的安装、配置与使用 34
2.2.3 MySQL数据库的安装、配置与使用 54
2.2.4 Navicat Premium及其安装 65
2.2.5 SublimeText及其安装 69
2.2.6 Git、TortoiseGit及其安装 70
2.3 JSP服务器环境安装与配置 79
2.3.1 JSP服务器运行环境 79
2.3.2 服务器软件Tomcat的安装与配置 79
2.3.3 创建Web服务目录 84
2.4 习题 86
2.4.1 简答题 86
2.4.2 上机练习 86
2.4.3 实训课题 86
第3章 Web项目实例分析与设计——扬帆起航 87
3.1 项目开发流程 87
3.2 教学日志管理系统分析与设计 91
3.2.1 教学日志管理系统需求分析 91
3.2.2 教学日志管理系统设计 95
第二部分 前端开发 101
第4章 HTML——一切从HTML开始 101
4.1 HTML概述 101
4.1.1 HTML入门——一个简单的HTML案例 102
4.1.2 HTML标签的基本概念 104
4.1.3 HTML文件基本架构 106
4.1.4 HTML的语法规范 109
4.2 HTML文本格式标签 111
4.2.1 标题标签<hn>…</hn> 111
4.2.2 文字格式标签<font>…</font> 112
4.2.3 字型设置标签 114
4.2.4 文字滚动标签 115
4.2.5 段落标签 116
4.3 图像与多媒体标签 120
4.3.1 图像标签<img> 120
4.3.2 背景音乐标签<bgsound> 121
4.3.3 多媒体标签<embed> 122
4.4 HTML的超链接标签 123
4.5 HTML的表格、列表与块容器标签 124
4.5.1 表格标签<table> 124
4.5.2 列表标签 129
4.5.3 块容器标签<div>和<span> 131
4.6 表单标签 133
4.6.1 表单标签<form>…</form> 134
4.6.2 输入标签<input> 134
4.6.3 下拉列表框标签<select>…</select> 136
4.6.4 多行文本框标签<textarea>…</textarea> 136
4.7 窗口框架标签 138
4.7.1 窗口框架标签<frameset> 138
4.7.2 不支持框架标签<noframes> 139
4.8 页面动态刷新和浮动窗口标签 142
4.8.1 页面动态刷新标签<meta> 142
4.8.2 浮动窗口标签<iframe> 143
4.9 网页中嵌入Java语言小程序的标签<applet> 144
4.10 HTML 5 146
4.10.1 HTML 5简介 146
4.10.2 HTML 5的开发工具 146
4.10.3 HTML 5代码编写规范 146
4.10.4 HTML 5新的语法架构 148
4.10.5 HTML 5新的页面架构 148
4.10.6 HTML 5新增的标签及不再使用的标签 150
4.10.7 HTML 5属性的变化 151
4.10.8 HTML 5新增的部分标签详解 154
4.11 习题 169
4.11.1 填空题 169
4.11.2 选择题 169
4.11.3 简答题 171
4.11.4 实训题 171
第5章 网页布局之DIV+CSS——网页化妆师 172
5.1 CSS基础 172
5.1.1 CSS的创建与使用 172
5.1.2 CSS语法 175
5.1.3 派生选择器 177
5.1.4 id选择器 178
5.1.5 CSS类选择器 179
5.1.6 CSS属性选择器 180
5.2 CSS样式 182
5.2.1 CSS背景 182
5.2.2 CSS文本 185
5.2.3 CSS字体 189
5.2.4 CSS链接 192
5.2.5 CSS列表 193
5.2.6 CSS表格 194
5.2.7 CSS轮廓 196
5.2.8 CSS对齐 196
5.3 CSS框模型 197
5.4 CSS边距 199
5.5 DIV+CSS网页布局 199
5.5.1 块状元素和内联元素 199
5.5.2 制作网页导航条 203
5.5.3 网页布局设计 207
5.6 习题 211
第6章 网页布局之FlexBox——布局新秀 213
6.1 FlexBox概述 213
6.1.1 FlexBox的使用 213
6.1.2 FlexBox基本概念 214
6.2 FlexBox属性 215
6.2.1 flex-direction属性 215
6.2.2 flex-grow属性 215
6.2.3 flex-wrap属性 218
6.2.4 justify-content属性 218
6.2.5 align-items属性 218
6.2.6 order属性 221
6.2.7 flex-shrink属性 222
6.2.8 flex-basis属性 222
6.3 FlexBox应用举例 222
6.4 FlexBox布局总结 224
6.5 习题 224
第7章 网页布局之Bootstrap——布局大佬 225
7.1 Bootstrap简介 225
7.1.1 Bootstrap概述 225
7.1.2 Bootstrap的使用 225
7.2 Bootstrap的网格系统 227
7.2.1 网格系统简介 227
7.2.2 网格系统的应用 228
7.3 Bootstrap排版 230
7.3.1 标题 230
7.3.2 页面主体 231
7.3.3 对齐与改变大小写 231
7.3.4 缩略语 231
7.3.5 地址 232
7.3.6 引用 232
7.3.7 代码块 233
7.4 Bootstrap表格 234
7.4.1 条纹状表格 234
7.4.2 带边框的表格 235
7.4.3 鼠标悬停效果的实现 236
7.4.4 表格紧缩效果的实现 237
7.4.5 表格的状态类 238
7.4.6 响应式表格 239
7.5 Bootstrap表单 240
7.5.1 基本表单 240
7.5.2 内联表单 241
7.5.3 水平表单 242
7.5.4 Bootstrap支持的表单控件 244
7.5.5 静态控件 246
7.5.6 表单控件的状态 247
7.5.7 表单控件的大小 250
7.5.8 表单的帮助文本 251
7.6 Bootstrap按钮和图片 251
7.6.1 可作为按钮使用的标签或元素 251
7.6.2 预定义样式 252
7.6.3 按钮的大小 252
7.6.4 按钮的状态 253
7.6.5 图片 254
7.7 Bootstrap布局组件 255
7.7.1 下拉菜单 255
7.7.2 按钮组 256
7.7.3 按钮下拉菜单 257
7.7.4 面板 259
7.7.5 导航菜单 263
7.8 使用Bootstrap开发网站后台管理界面 266
7.8.1 页面的基本框架 266
7.8.2 导航栏部分 266
7.8.3 页面的主要内容部分 268
7.9 习题 276
第8章 JavaScript语言——网页动起来 277
8.1 JavaScript语言概述 277
8.1.1 一个简单的包含JavaScript语言的网页 277
8.1.2 JavaScript语言概述 278
8.1.3 JSP中如何嵌入JavaScript小程序 280
8.2 JavaScript的数据类型、运算符 280
8.2.1 保留字 280
8.2.2 数据类型 281
8.2.3 变量 281
8.2.4 运算符 282
8.3 JavaScript的函数 284
8.4 JavaScript的事件 285
8.5 JavaScript对象及其使用 287
8.6 JavaScript程序流程的控制 291
8.6.1 if条件判断结构 291
8.6.2 switch多路分支结构 292
8.6.3 for循环控制结构 295
8.6.4 while循环控制结构 296
8.6.5 do…while循环控制结构 298
8.7 文档对象模型 299
8.7.1 文档对象模型应用举例 299
8.7.2 文档对象模型概述 301
8.7.3 文档对象模型的节点访问方法 303
8.8 习题 306
第9章 EasyUI——把窗口系统搬到网页上 307
9.1 EasyUI简介 307
9.1.1 EasyUI概述 307
9.1.2 EasyUI的使用 308
9.2 EasyUI应用 311
9.3 EasyUI的菜单与按钮 321
9.3.1 简单菜单 321
9.3.2 链接按钮 322
9.3.3 菜单按钮 323
9.3.4 分割按钮 324
9.4 EasyUI布局 325
9.4.1 边框布局 325
9.4.2 复杂布局 327
9.4.3 折叠面板 329
9.4.4 标签页 329
9.5 EasyUI数据网格 332
9.5.1 数据网格 332
9.5.2 取得数据网格选中行的数据 334
9.5.3 添加工具栏 334
9.5.4 格式化列 336
9.5.5 设置排序 338
9.6 EasyUI窗口 339
9.6.1 简单窗口 339
9.6.2 自定义窗口工具栏 340
9.6.3 窗口与布局 341
9.6.4 对话框 343
9.7 EasyUI树形菜单 344
9.7.1 使用标签创建树形菜单 344
9.7.2 创建异步树形菜单 344
9.8 EasyUI表单 346
9.8.1 创建异步提交表单 346
9.8.2 表单验证 347
9.8.3 创建树形下拉框 349
9.9 习题 350
第10章 案例项目的页面设计——面子很重要 351
10.1 教学日志管理系统的主页面设计 351
10.2 教学日志管理系统的登录页面设计 354
10.3 教学日志管理系统的教师端页面设计 355
10.4 习题 361
第三部分 后端开发 365
第11章 Web服务器端程序——有人做面子,就得有人做里子 365
11.1 Web服务器端简介 365
11.2 Web服务器端语言迭代历史 366
11.2.1 静态页面时代 366
11.2.2 CGI时代 366
11.2.3 动态页面时代 369
11.3 习题 374
第12章 Servlet—— Java中的CGI 375
12.1 Servlet的工作原理 375
12.1.1 Servlet概述 375
12.1.2 Servlet的层次结构 376
12.1.3 Servlet的生命周期 378
12.2 Servlet创建与使用 380
12.2.1 Servlet程序的编写过程 380
12.2.2 第一个Servlet程序 382
12.3 doGet与doPost方法 384
12.4 重定向与转发 391
12.4.1 请求转发 391
12.4.2 重定向跳转 392
12.5 习题 393
第13章 JSP页面与标签——杂烩饭 394
13.1 JSP概述 394
13.1.1 JSP 394
13.1.2 为什么要有JSP 396
13.2 JSP的工作原理 397
13.3 JSP语法 399
13.3.1 JSP脚本 399
13.3.2 JSP声明 399
13.3.3 JSP注释 400
13.3.4 JSP指令 400
13.3.5 JSP表达式 400
13.3.6 JSP控制流 402
13.4 JSP指令 404
13.4.1 page指令 405
13.4.2 include指令 412
13.5 JSP动作标签 413
13.6 习题 415
第14章 JSP内置对象——通于天地谓之神 416
14.1 JSP内置对象简介 416
14.2 out对象 417
14.2.1 输出信息的方法 417
14.2.2 与缓冲区相关的方法 418
14.3 request对象 420
14.3.1 用request读取客户端传递来的参数 420
14.3.2 request作用范围变量 425
14.3.3 用request读取系统信息 429
14.3.4 用request读取HTTP请求报头信息 432
14.3.5 用request读取Cookie 432
14.3.6 用request选择国际化信息 437
14.4 response对象 437
14.4.1 输出缓冲区与响应提交 437
14.4.2 HTTP响应报头设置 438
14.4.3 用response实现文件下载 441
14.5 application对象 444
14.5.1 用application访问Web应用的初始参数 444
14.5.2 application作用范围变量 445
14.5.3 用application对象读取Servlet容器信息 447
14.5.4 用application记录操作日志 447
14.6 session对象 448
14.6.1 用URL重写实现session跟踪 449
14.6.2 用Cookie实现session跟踪 451
14.6.3 用隐藏表单域实现session跟踪 454
14.6.4 session作用范围变量与session跟踪 456
14.7 其他JSP内置对象 461
14.7.1 config隐含对象 461
14.7.2 exception隐含对象 462
14.7.3 page隐含对象 463
14.7.4 pageContext隐含对象 463
14.8 习题 464
第15章 JSTL和EL表达式——混入HTML的另类 465
15.1 概述 465
15.2 JSTL的使用 466
15.2.1 为JSP添加JSTL支持 466
15.2.2 核心标签库简介 467
15.2.3 <c:out>标签 468
15.2.4 <c:set>标签 469
15.2.5 <c:remove>标签 469
15.2.6 <c:if>标签 470
15.2.7 <c:choose>、<c:when>和<c:otherwise>标签 471
15.2.8 <c:forEach>标签 472
15.2.9 核心标签库中的其他标签 474
15.2.10 格式化标签库 474
15.3 EL表达式 476
15.3.1 简介 476
15.3.2 EL表达式的隐含对象 478
15.4 MVC中使用EL表达式 479
15.5 习题 483
第16章 数据持久化——志不强则智不达 484
16.1 为何要做数据持久化 484
16.2 文件存储 484
16.2.1 文件读取 484
16.2.2 文件写入 487
16.2.3 文件随机读写 488
16.2.4 网页中的读写 489
16.2.5 文件数据存储格式 490
16.3 数据库读写 492
16.3.1 数据库的思想 492
16.3.2 建立数据库 493
16.3.3 连接数据库 501
16.3.4 数据库查询 505
16.4 案例 506
16.4.1 用户登录案例 506
16.4.2 书籍的列表与编辑案例 513
16.5 习题 516
第17章 轻量级的MVC+ORM框架YangMVC——轻车简从 517
17.1 MVC简介 517
17.1.1 MVC的产生原因 517
17.1.2 MVC基本概念 519
17.1.3 历史上的MVC 520
17.2 YangMVC简介 521
17.2.1 框架特点 521
17.2.2 框架配置 521
17.3 Hello World案例 524
17.4 CRUD案例 525
17.4.1 案例所使用的数据库 525
17.4.2 数据列表 525
17.4.3 数据添加 528
17.4.4 数据修改 531
17.4.5 数据删除 533
17.4.6 数据分页列表 533
17.5 控制器详解 536
17.5.1 控制器创建 536
17.5.2 路径映射 537
17.5.3 控制器方法 538
17.5.4 获取参数 538
17.5.5 输出文本或网页 539
17.5.6 输出JSON 540
17.5.7 使用FreeMarker输出 541
17.5.8 session访问 542
17.5.9 application访问 542
17.5.10 上传文件 543
17.5.11 外键 546
17.5.12 单例模式 548
17.6 数据库访问 548
17.6.1 简介 548
17.6.2 Model与DBTool 548
17.6.3 Model数据访问 549
17.6.4 数据修改 550
17.6.5 数据插入 550
17.6.6 数据查询 551
17.6.7 数据删除 552
17.6.8 LasyList的使用 552
17.7 登录案例 553
17.7.1 登录逻辑 553
17.7.2 登录表单 553
17.7.3 数据库的用户表 556
17.7.4 提交处理 557
17.8 习题 558
第18章 Hibernate——镜花亦花,水月亦月 559
18.1 使用Hibernate进行数据库读写 559
18.2 Hibernate的配置 559
18.3 使用Hibernate进行开发 566
18.4 习题 573
第19章 MVC架构与Struts——三权分立,各司其职 574
19.1 自己动手实现MVC 574
19.2 Struts入门 578
19.2.1 Struts简介 578
19.2.2 Struts环境配置 579
19.2.3 Hello Struts 582
19.3 Struts进阶 585
19.3.1 Struts处理表单和URL参数 585
19.3.2 Action属性的输出 586
19.3.3 用户登录实例 586
19.4 习题 590
第20章 Spring之旅——保姆改变世界 591
20.1 依赖注入思想 591
20.1.1 “吃饭问题”的硬编码 591
20.1.2 “吃饭问题”的工厂模式 592
20.1.3 “食品工厂”的反射机制实现 593
20.1.4 “吃饭问题”的反转控制 594
20.2 Spring中的依赖注入实现 595
20.2.1 Spring安装 595
20.2.2 Spring中的“吃饭问题” 596
20.2.3 “吃饭问题”之我的鸡蛋你别吃 598
20.2.4 “吃饭问题”之花样繁多 598
20.3 面向切面的编程 599
20.4 Spring中的面向切面的编程 600
20.5 在Web中使用Spring 602
20.5.1 自定义Servlet初始化Spring 602
20.5.2 使用Spring给出的Listener初始化 604
20.5.3 使用Spring给出的Servlet初始化 607
20.6 习题 608
第21章 案例系统的功能实现——没后端就是花架子 609
21.1 前言 609
21.2 数据库设计 609
21.2.1 数据库应具备的功能 609
21.2.2 数据库表格 609
21.2.3 数据库工具的使用 612
21.3 项目建立和HTML导入 612
21.4 主页和用户管理 613
21.4.1 主页 613
21.4.2 教师职工登录 614
21.4.3 院系部门登录 618
21.4.4 用户注册 620
21.4.5 教师用户主页 624
21.4.6 查看个人信息 630
21.4.7 修改个人信息 632
21.4.8 修改密码 635
21.4.9 用户退出 637
21.5 课程管理 637
21.5.1 课程信息 637
21.5.2 课程添加 638
21.6 教学日志管理 640
21.6.1 查看所有教学日志 640
21.6.2 新建教学日志 641
21.6.3 查询教学日志 644
21.6.4 我的未完成日志 647
21.6.5 教学日志信息 648
21.6.6 修改教学日志项 649
21.6.7 删除教学日志项 652
21.7 期末总结管理 652
21.7.1 新建期末总结 653
21.7.2 待评价期末总结 653
21.7.3 已评价期末总结 654
21.8 院系管理功能 654
21.9 本章小结 654
21.10 习题 655