描述
开 本: 16开纸 张: 胶版纸包 装: 平装-胶订是否套装: 否国际标准书号ISBN: 9787302522454
? 基于Servlet 4.0/Java SE 8重新改版,无论章节架构还是范例程序代码,都做了全面更新
? 详细介绍了OWASP TOP10、CWE、CVE,讨论了会话安全、密码管理、Java EE安全机制、CSRF等Web安全基本概念
? 增加了对Spring、Spring MVC、Spring Boot的入门介绍,认识Web MVC框架与快速开发工具的使用
? 涵盖了文本处理、图片验证、自动登录、验证过滤器、压缩处理、线上文件管理、邮件发送等实用范例
? 以“微博”项目贯穿全书,将JSP & Servlet技术应用于实际项目开发之中,并使用重构方式来改进应用程序架构
? 提供练习的Lab操作文档,方便读者掌握练习重点,将IDE操作纳入教学内容,使读者能与实践结合
? 《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》适合JSP & Servlet初学者以及广大JSP & Servlet技术应用人员
提供资源下载:范例项目、案例操作
? Servlet 4.0新功能介绍
? 加强Web安全基本观念
? 衔接Spring MVC、Spring Boot
? 提供Lab操作文档
Chapter 1 Web应用程序简介 1
1.1 Web应用程序基础 2
1.1.1 关于HTML 2
1.1.2 URL、URN与URI 3
1.1.3 关于HTTP 5
1.1.4 HTTP请求方法 6
1.1.5 有关URI编码 9
1.1.6 后端与前端 11
1.1.7 Web安全概念 13
1.2 Servlet/JSP简介 14
1.2.1 何谓Web容器 14
1.2.2 Servlet与JSP的关系 16
1.2.3 关于MVC/Model 2 19
1.2.4 Java EE简介 22
1.3 重点复习 23
Chapter 2 编写与设置Servlet 24
2.1 第一个Servlet 25
2.1.1 准备开发环境 25
2.1.2 第一个Servlet程序 27
2.2 在Hello之后 29
2.2.1 关于HttpServlet 30
2.2.2 使用@WebServlet 32
2.2.3 使用web.xml 33
2.2.4 文件组织与部署 36
2.3 进阶部署设置 37
2.3.1 URL模式设置 37
2.3.2 Web文件夹结构 40
2.3.3 使用web-fragment.xml 41
2.4 重点复习 44
2.5 课后练习 45
Chapter 3 请求与响应 46
3.1 从容器到HttpServlet 47
3.1.1 Web容器做了什么 47
3.1.2 doXXX()方法 49
3.2 关于HttpServletRequest 52
3.2.1 处理请求参数 52
3.2.2 处理请求标头 55
3.2.3 请求参数编码处理 56
3.2.4 getReader()、getInputStream()读取内容 58
3.2.5 getPart()、getParts()取得
上传文件 62
3.2.6 使用RequestDispatcher调派请求 67
3.3 关于HttpServletResponse 73
3.3.1 设置响应标头、缓冲区 73
3.3.2 使用getWriter()输出字符 75
3.3.3 使用getOutputStream()输出
二进制字符 78
3.3.4 使用sendRedirect()、
sendError() 80
3.4 综合练习 81
3.4.1 微博应用程序功能概述 82
3.4.2 实现会员注册功能 83
3.4.3 实现会员登录功能 88
3.5 重点复习 89
3.6 课后练习 90
Chapter 4 会话管理 92
4.1 会话管理基本原理 93
4.1.1 使用隐藏域 93
4.1.2 使用Cookie 96
4.1.3 使用URI重写 100
4.2 HttpSession会话管理 102
4.2.1 使用HttpSession 103
4.2.2 HttpSession会话管理
原理 107
4.2.3 HttpSession与URI重写 109
4.3 综合练习 111
4.3.1 登录与注销 111
4.3.2 会员信息管理 112
4.3.3 新增与删除信息 116
4.4 重点复习 118
4.5 课后练习 119
Chapter 5 Servlet进阶API、过滤
器与监听器 120
5.1 Servlet进阶API 121
5.1.1 Servlet、ServletConfig与GenericServlet 121
5.1.2 使用ServletConfig 123
5.1.3 使用ServletContext 126
5.1.4 使用PushBuilder 128
5.2 应用程序事件、监听器 130
5.2.1 ServletContext事件、
监听器 130
5.2.2 HttpSession事件、
监听器 135
5.2.3 HttpServletRequest事件、
监听器 141
5.3 过滤器 142
5.3.1 过滤器的概念 142
5.3.2 实现与设置过滤器 144
5.3.3 请求封装器 149
5.3.4 响应封装器 153
5.4 异步处理 157
5.4.1 AsyncContext简介 158
5.4.2 异步Long Polling 160
5.4.3 更多AsyncContext细节 163
5.4.4 异步Server-Sent Event 164
5.4.5 使用ReadListener 167
5.4.6 使用WriteListener 169
5.5 综合练习 172
5.5.1 创建UserService 172
5.5.2 设置过滤器 177
5.5.3 重构微博 179
5.6 重点复习 183
5.7 课后练习 185
Chapter 6 使用JSP 186
6.1 从JSP到Servlet 187
6.1.1 JSP生命周期 187
6.1.2 Servlet至JSP的简单
转换 191
6.1.3 指示元素 194
6.1.4 声明、Scriptlet与表达式
元素 197
6.1.5 注释元素 201
6.1.6 隐式对象 201
6.1.7 错误处理 204
6.2 标准标签 208
6.2.1 、标签 208
6.2.2 、与简介 209
6.2.3 深入、与 211
6.2.4 谈谈Model 1 214
6.2.5 XML格式标签 216
6.3 表达式语言(EL) 217
6.3.1 EL简介 218
6.3.2 使用EL取得属性 220
6.3.3 EL隐式对象 222
6.3.4 EL运算符 223
6.3.5 自定义EL函数 224
6.3.6 EL 3.0 226
6.4 综合练习 227
6.4.1 改用JSP实现视图 228
6.4.2 重构UserService与
member.jsp 231
6.4.3 创建register.jsp、index.jsp、user.jsp 234
6.5 重点复习 242
6.6 课后练习 243
Chapter 7 使用JSTL 244
7.1 JSTL简介 245
7.2 核心标签库 246
7.2.1 流程处理标签 246
7.2.2 错误处理标签 249
7.2.3 网页导入、重定向、URI
处理标签 250
7.2.4 属性处理与输出标签 252
7.3 I18N兼容格式标签库 254
7.3.1 I18N基础 254
7.3.2 信息标签 257
7.3.3 地区标签 259
7.3.4 格式标签 264
7.4 XML标签库 267
7.4.1 XPath、XSLT基础 267
7.4.2 解析、设置与输出标签 270
7.4.3 流程处理标签 271
7.4.4 文件转换标签 272
7.5 函数标签库 274
7.6 综合练习 275
7.6.1 修改index.jsp、
register.jsp 275
7.6.2 修改member.jsp 277
7.6.3 修改user.jsp 278
7.7 重点复习 278
7.8 课后练习 280
Chapter 8 自定义标签 281
8.1 Tag File自定义标签 282
8.1.1 Tag File简介 282
8.1.2 处理标签属性与Body 285
8.1.3 TLD文件 287
8.2 Simple Tag自定义标签 288
8.2.1 Simple Tag简介 288
8.2.2 了解API架构与生命
周期 290
8.2.3 处理标签属性与Body 293
8.2.4 与父标签沟通 296
8.2.5 TLD文件 300
8.3 Tag自定义标签 301
8.3.1 Tag简介 301
8.3.2 了解架构与生命周期 302
8.3.3 重复执行标签Body 304
8.3.4 处理Body运行结果 306
8.3.5 与父标签沟通 309
8.4 综合练习 311
8.4.1 重构/使用DAO 312
8.4.2 加强user.jsp 315
8.5 重点复习 317
8.6 课后练习 319
Chapter 9 整合数据库 320
9.1 JDBC入门 321
9.1.1 JDBC简介 321
9.1.2 连接数据库 327
9.1.3 使用Statement、
ResultSet 331
9.1.4 使用PreparedStatement、CallableStatement 335
9.2 JDBC进阶 338
9.2.1 使用DataSource取得
连接 338
9.2.2 使用ResultSet卷动、更新
数据 341
9.2.3 批次更新 343
9.2.4 Blob与Clob 344
9.2.5 事务简介 350
9.2.6 metadata简介 356
9.2.7 RowSet简介 358
9.3 使用SQL标签库 363
9.3.1 数据源、查询标签 363
9.3.2 更新、参数、事务标签 364
9.4 综合练习 366
9.4.1 使用JDBC实现DAO 366
9.4.2 设置JNDI部署描述 369
9.4.3 实现首页最新信息 370
9.5 重点复习 374
9.6 课后练习 375
Chapter 10 Web容器安全管理 376
10.1 了解与实现Web容器安全
管理 377
10.1.1 Java EE安全基本
概念 377
10.1.2 声明式基本身份验证 379
10.1.3 容器基本身份验证
原理 384
10.1.4 声明式窗体验证 385
10.1.5 容器窗体验证原理 386
10.1.6 使用HTTPS保护
数据 387
10.1.7 编程式安全管理 389
10.1.8 标注访问控制 391
10.2 综合练习 393
10.2.1 使用容器窗体验证 393
10.2.2 设置DataSource-
Realm 395
10.3 重点复习 396
10.4 课后练习 397
Chapter 11 JavaMail入门 398
11.1 使用JavaMail 399
11.1.1 发送纯文字邮件 399
11.1.2 发送多重内容邮件 401
11.2 综合练习 405
11.2.1 发送验证账号邮件 405
11.2.2 验证用户账号 411
11.2.3 发送重设密码邮件 412
11.2.4 重新设置密码 415
11.3 重点复习 418
11.4 课后练习 419
Chapter 12 Spring起步走 420
12.1 使用Gradle 421
12.1.1 下载和设置Gradle 421
12.1.2 简单的Gradle项目 422
12.1.3 Gradle与Eclipse 423
12.2 认识Spring核心 425
12.2.1 相依注入 425
12.2.2 使用Spring核心 427
12.3 重点复习 430
12.4 课后练习 430
Chapter 13 整合Spring MVC 431
13.1 初识Spring MVC 432
13.1.1 链接库或框架 432
13.1.2 初步套用Spring
MVC 433
13.1.3 注入服务对象与
属性 440
13.2 逐步善用Spring MVC 444
13.2.1 简化控制器 444
13.2.2 建立窗体对象 449
13.2.3 关于Thymeleaf
模板 452
13.3 重点复习 455
13.4 课后练习 456
Chapter 14 简介Spring Boot 457
14.1 初识Spring Boot 458
14.1.1 哈喽!Spring Boot! 458
14.1.2 实现MVC 461
14.1.3 使用JSP 464
14.2 整合IDE 465
14.2.1 导入Spring Boot
项目 465
14.2.2 Spring Tool Suite 466
14.3 重点复习 467
14.4 课后练习 468
Appendix A 如何使用《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》项目 469
A.1 项目环境配置 470
A.2 范例项目导入 470
Java EE 7/8 新功能索引
web.xml版本变动 33
web.xml新增 34
HttpServletRequest新增getHttpServletMapping() 39
web.xml新增 57
Part新增getSubmittedFileName() 64
web.xml新增 76
HttpServletRequest新增changeSessionId() 104
ServletContext新增setSessionTimeout() 109
新增PushBuilder 128
新增HttpSessionIdListener 141
新增了GenericFilter、HttpFilter类别 145
ServletInputStream非阻断输入 168
ServletOutputStream非阻断输出 170
Expression Language 3.0 226
这份导读可以让你更了解如何使用《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》。
字型
《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》内文中与程序代码相关的文字,都用固定宽度字体来加以呈现,以与一般名词作区别。例如,JSP是一般名词,而HttpServlet为程序代码相关文字,使用了固定宽度字体。
新旧版差异
《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》是从《JSP & Servlet学习笔记(第2版)》改版而来的,因此这里说明一下与《JSP & Servlet学习笔记(第2版)》之间的差异。
就目录上可以看出的主要差异是,删除了《JSP & Servlet学习笔记(第2版)》第12章“从模式到框架”,并由新撰写的3个Spring相关章节取代,这是为了从实际的框架中学习,而不是空谈概念;然而,Spring那些章节并不是作为全面探讨Spring之用,而是作为一个衔接,希望从实际的应用程序重构中筛选出对应用程序有益的框架特性,以便逐步掌握框架的本质。
当然,照例要谈一些Java EE 8的功能,相关讨论会放在各章节中适当的地方。由于《JSP & Servlet学习笔记(第2版)》是基于Java EE 6,为了便于查找Java EE 7/8的功能介绍,如果发现页左侧有如 图示,就表示提及Java EE 7或Java EE 8功能,《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》还提供了Java EE 7/8功能快速查询目录。
各章节的范例都做了全面改写,由于Java EE 8是基于Java SE 8,范例程序代码会适当使用Java SE 8的特性,例如Lambda与Stream API等。
时至今日,撰写应用程序时必须有相关的安全防护概念,作为一本谈论Web应用程序的书,适时地提及安全概念是必要的,书中谈到了OWASP TOP 10,讨论了Session防护、注入攻击、Cookie安全、密码加盐哈希、跨域伪造请求(Cross-Site Request Forgery,CSRF)等安全基本观念,并在适当的地方介绍了OWASP Java Encoder、Java HTML Sanitizer等项目的使用。
程序范例
《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》大多数范例使用完整的程序实作来展现,如果是用以下方式示范程序代码:
FirstServlet Hello.java
package cc.openhome;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet(“/hello”)
public class Hello extends HttpServlet {
@Override
protected void doGet(
HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
response.setContentType(“text/html;charset=UTF-8”);
String name = request.getParameter(“name”);
PrintWriter out = response.getWriter();
out.print(“”);
out.print(“”);
out.print(“”);
out.print(“
out.print(“”);
out.print(“”);
out.printf(“
Hello! %s!%n
“, name);
out.print(“”);
out.print(“”);
}
}
范例开始的左边名称为FirstServlet,表示可以在范例文件的samples文件夹中查找相应章节目录,即可找到对应的FirstServlet项目,而右边名称为Hello.java,表示可以在项目中找到Hello.java文件。如果程序代码中出现标号与提示文字,表示后续的内文中会有对应于标号及提示的更详细说明。
原则上,建议每个项目范例都亲自动手撰写,如果由于教学时间或实现时间上的限制,《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》有建议进行的练习。在范例开始前有 图示的,表示建议动手实践,而且在范例文件的labs文件夹中有练习项目的基础内容,可以在导入项目后,完成项目中遗漏或必须补齐的程序代码或设置。
如果文中使用以下程序代码,则表示它是一个完整的程序内容,但不是项目的一部分,主要用来展现如何撰写一个完整的文件。
如果使用以下程序代码,则表示它是一个代码段,主要展现程序撰写时需要特别注意的片段。
// 略 …
public void _jspService(HttpServletRequest request,
HttpServletResponse response)
throws java.io.IOException, ServletException {
// 略…
try {
response.setContentType(“text/html;charset=UTF-8”);
//略…
out = pageContext.getOut();
// 略…
} catch (Throwable t) {
// 略 …
} finally {
// 略 …
操作步骤
《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》将IDE设定的相关操作步骤,也作为练习的一部分,你会看到如下的操作步骤说明:
(1) 运行eclipse文件夹中的eclipse.exe。
(2) 出现Eclipse Launcher对话框时,将Workspace设定为C:workspace,单击Launch按钮。
(3) 执行菜单Window|Preferences命令,在弹出的Preferences对话框中,展开左边的Server节点,选择其中的Runtime Environment节点。
(4) 单击右边Server Runtime Environments中的Add按钮,在弹出的New Server Runtime Environment对话框中选择Apache Tomcat v9.0,单击Next按钮。
(5) 单击Tomcat installation directory旁的Browse按钮,选取C:workspace中解压缩的Tomcat文件夹,单击“确定”按钮。
提示框
在《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》中会出现以下提示框:
针对课程中提到的观点,提供一些额外的资源或思考方向,暂时忽略这些提示对课程进行的影响,但有时间的话,针对这些提示多作阅读、思考或讨论是有帮助的。
针对课程中提到的观点,以提示框方式特别呈现出必须注意的一些使用方式、陷阱或避开问题的方法,看到这个提示框时请集中精力阅读。
综合练习
《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》以“微博”项目的实现过程贯穿全书,随着每一章的进行,会在适当的时候将新介绍的技术应用至“微博”程序之中并作适当的修改,以了解完整的应用程序基本上是如何建构出来。
附录
《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》配套资源中的范例文件包括《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》全部范例,提供Eclipse范例项目,部分范例是Gradle项目,附录A说明如何使用这些范例项目。《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》也说明如何在Web应用程序中整合数据库,实现范例时使用的数据库为H2,使用方式可见9.1节的内容,范例若包含H2数据库文件*.mv.db的话,联机时的名称与密码都是caterpillar与12345678。
联系作者
若有与《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》相关的勘误反馈等问题,可通过网站与作者联系:
http://openhome.cc
资源下载
《JSP & Servlet学习笔记(第3版)——从Servlet到Spring Boot》配套资源下载:
评论
还没有评论。