Servlet/JSP深入详解——基于Tomcat的Web开发(畅销书升级版)
  • 推荐0
  • 收藏5
  • 浏览2.7K

Servlet/JSP深入详解——基于Tomcat的Web开发(畅销书升级版)

孙鑫 (作者)  黄爱萍 (责任编辑)

  • 丛  书:孙鑫精品图书系列
  • 书  号:978-7-121-36150-0
  • 出版日期:2019-06-01
  • 页  数:688
  • 开  本:16(185*260)
  • 出版状态:上市销售
  • 维护人:高洪霞
本书共分3篇,分别为Servlet篇、JSP篇及其应用篇,书中展示了Java Web开发中各种技术的应用,帮助读者快速掌握Java Web开发。
在知识的讲解上,本书采用理论与实践相结合的方式,从程序运行的内部机制进行分析讲解,并通过大量的实例和实验来验证并运用本书的知识。大部分章节都提供了多个例子,而且很多例子都是目前Web开发中经常使用的,具有相当高的实用价值。
本书不仅可以作为Java Web开发的学习用书,还可以作为从事Java Web开发的程序员的参考用书和必备手册。
本书遵照Servlet和JSP 规范,系统、完整地介绍了Java Web开发中的各种技术,从知识的讲解→知识的运用→实际问题的解决,一步一步地引导读者掌握Java Web开发的知识体系结构。
孙鑫,国内著名的IT技术和教育专家,2009中国教育杰出人物,程序员之家网站站长(www.phome.asia/www.sunxin.org)。具有20多年的软件开发和教育培训经验,精通多种程序语言和技术架构,曾主讲过的课程包括C/C++、VC++、COM/DCOM/COM+、SQL Server、Oracle、Java、J2EE、Struts/Struts 2、Hibernate、iBatis、Spring、数据库建模等。2004年曾推出《Java无难事》和《VC++深入编程》教学视频,获得了强烈反响,在网络上掀起了一股视频教学的风潮,数十万的学员通过这两套视频走上了软件开发的道路。从2006年开始,相继出版了畅销技术专著:《Java Web开发详解》、《VC++深入详解》、《Struts 2深入详解》、《Servlet/JSP深入详解》、《XML、XML Schema、XSLT 2.0和XQuery开发详解》、《HTML5、CSS和JavaScript开发》等。
前 言
随着Java语言的流行,Java在网站和企业级应用的开发上应用得越来越普遍,Java Web开发已经成为Java企业级解决方案中不可或缺的组成部分。
本书遵照Servlet和JSP 规范,系统、完整地介绍了Java Web开发中的各种技术,从知识的讲解→知识的运用→实际问题的解决,一步一步地引导读者掌握Java Web开发的知识体系结构。
本书面向的读者
本书面向的读者群包括:
 毫无Web经验的初学者。
 有一定的Web经验,但没有从事过Web开发的读者。
 具有其他脚本语言Web开发经验,想要快速转向Java Web开发的程序员。
 正在从事Java Web开发的初、中级程序员。

本书的内容组织
全书共分3篇,包括Servlet篇、JSP篇和应用篇。前两篇相对独立,但在内容上又有递进的关系。最后一个部分综合应用前两个部分的知识,讲解了一些高级应用,并结合实际开发中要解决的问题,给出了很多具有实用价值的实例程序。
附录作为本书不可或缺的部分,对HTML和HTTP协议进行了介绍,缺少Web经验的读者可以从这部分内容中学到Web开发的必备知识。此外,附录还提供了server.xml和web.xml文件的介绍,可以作为读者从事Java Web开发的参考。
本书在内容的编排上独具匠心,将知识的连贯性和学习规律有机地组织在一起。本书首先介绍了Servlet技术及其应用,并介绍了Tomcat服务器的体系结构和相关配置。在第一篇中,包括了下面的主题:
 Servlet与Tomcat
 Servlet技术
 Web应用程序的部署
 数据库访问
 会话跟踪
 Servlet的异常处理机制
 开发线程安全的Servlet
读者如果掌握了这部分的内容,就可以开始Web应用程序的开发了。
本书第二篇是JSP篇,包括了与JSP相关的各种技术。主要内容有JSP技术、JSP与JavaBean、JSP开发的两种架构模型、自定义标签库、表达式语言、JSTL、标签文件。JSP是建立在Servlet规范提供的功能之上的动态网页技术,读者看完第1篇介绍的Servlet,自然也就能理解JSP了。第二篇的内容细致全面,不但可以作为学习资料使用,而且可以作为以后工作中的参考手册。
本书第三篇是应用篇,结合前2篇介绍的知识,讲解了一些高级应用,给出了很多具有实用价值的实例程序。主要内容有:
 Servlet监听器
 过滤器在Web开发中的应用
 中文乱码问题与国际化
 Web应用程序安全
 避免表单重复提交等实例
 使用Eclipse开发Web应用程序
 Servlet 3.0新特性详解
这部分内容从应用开发的角度帮助读者提升Java Web开发技能。
本书的实例程序
笔者在编写本书时,使用的操作系统是Windows 8.1专业版,JDK版本是1.8.0_192,Web容器是Tomcat 9.0.14,开发工具是Eclipse IDE for Enterprise Java Developers(版本2018-12),数据库是MySQL 8.0.13。本书所有的实例程序都在上述环境中运行正常。
本书绝大部分的例子程序,都没有放在Tomcat安装目录的webapps目录下,而是单独放在自定义的一个目录中。读者要运行这些程序,有两种方式:一种方式是直接将网站上下载的例子程序目录复制到Tomcat的webapps目录下运行;另一种方式是配置Web应用程序的运行目录,在%CATALINA_HOME%\conf\Catalina\localhost目录下(%CATALINA_ HOME%表示Tomcat的安装目录),建立chXX.xml(XX表示每章的序号,例如第5章是ch05.xml,第13章是ch13.xml)文件。例如,要配置第5章的例子程序,可以在%CATALINA_HOME%\conf\Catalina\localhost目录下创建ch05.xml文件,编辑这个文件,输入下面的内容:

将“F:\JSPLesson\ch05”替换为读者机器上对应章节的Web应用程序所在的目录。
此外,在每章例子程序的开发步骤中也给出了详细的配置过程,读者按照步骤操作,会发现配置非常容易。
当采用数据源的方式来访问数据库时,你需要将MySQL的JDBC驱动复制到Tomcat安装目录的lib子目录中。
学习建议
作者针对三种不同类型的读者,提出下面的学习建议。
(1)对HTML和HTTP协议不是很了解的读者,建议从附录A、附录B开始学习,然后再从第1章开始学习。在学习第1篇的Servlet时,要结合附录B,随时参照,以加深对HTTP Servlet的理解。
(2)对HTML和HTTP协议比较清楚的读者,可以直接从第1章开始学习,按照章节的顺序一步一步进行下去。
(3)有Java Web开发经验的读者,可以有选择性地学习本书的内容,并在开发过程中,以本书作为参考用书。
最后,衷心地祝愿读者能够从此书获益,从而实现自己的开发梦想。由于本书的内容较多、牵涉的技术较广,错误和疏漏之处在所难免,欢迎广大技术专家和读者指正。作者的联系方式是csunxin@sina.com。
本书代码下载及读者交流
轻松注册成为博文视点社区用户(www.broadview.com.cn),扫码直达本书页面。
 下载资源:本书如提供示例代码及资源文件,均可在“下载资源”处下载。
 提交勘误:您对书中内容的修改意见可在“提交勘误”处提交,若被采纳,将获赠博文视点社区积分(在您购买电子书时,积分可用来抵扣相应金额)。
 交流互动:在页面下方“读者评论”处留下您的疑问或观点,与我们和其他读者一同学习交流。
页面入口: http://www.broadview.com.cn/36150

目录

目 录

Servlet篇
第1章 Servlet与Tomcat 1
1.1 Web技术的发展 1
1.2 Servlet与Servlet容器 3
1.3 Servlet容器的分类 4
1.4 Tomcat简介 5
1.5 Tomcat的安装与配置 6
1.5.1 Tomcat的目录结构 8
1.5.2 运行Tomcat 9
1.5.3 Tomcat启动分析 13
1.6 Tomcat的体系结构 15
1.7 Tomcat的管理程序 17
1.8 小结 19
第2章 Servlet技术 20
2.1 Servlet API 20
2.1.1 Servlet接口 21
2.1.2 ServletRequest和ServletResponse 22
2.1.3 ServletConfig 25
2.1.4 一个简单的Servlet 25
2.1.5 GenericServlet 33
2.1.6 HttpServlet 34
2.1.7 HttpServletRequest和HttpServletResponse 35
2.2 几个实例 38
2.2.1 实例一:WelcomeServlet 38
2.2.2 实例二:OutputInfoServlet 44
2.2.3 实例三:LoginServlet 48
2.3 Servlet异常 53
2.3.1 ServletException类 53
2.3.2 UnavailableException类 53
2.4 Servlet生命周期 54
2.5 Servlet上下文 56
2.5.1 ServletContext接口 56
2.5.2 页面访问量统计实例 58
2.6 请求转发 62
2.6.1 RequestDispatcher接口 62
2.6.2 得到RequestDispatcher对象 63
2.6.3 请求转发的实例 63
2.6.4 sendRedirect()和forward()方法的区别 70
2.7 小结 71
第3章 Web应用程序的部署 72
3.1 配置任意目录下的Web应用程序 72
3.2 WAR文件 75
3.3 与Servlet配置相关的元素 78
3.3.1 元素及其子元素 78
3.3.2 元素及其子元素 80
3.4 一个实例 82
3.5 小结 86
第4章 数据库访问 87
4.1 JDBC驱动程序的类型 88
4.1.1 JDBC-ODBC桥 88
4.1.2 部分本地API、部分Java驱动程序 89
4.1.3 JDBC网络纯Java驱动程序 89
4.1.4 本地协议的纯Java驱动程序 89
4.2 安装数据库 90
4.3 下载MySQL JDBC驱动 94
4.4 JDBC API 95
4.4.1 加载并注册数据库驱动 96
4.4.2 建立到数据库的连接 99
4.4.3 访问数据库 100
4.4.4 事务处理 129
4.4.5 可滚动和可更新的结果集 138
4.5 JDBC数据源和连接池 140
4.6 小结 145
第5章 会话跟踪 146
5.1 用于会话跟踪的技术 147
5.1.1 SSL会话 147
5.1.2 Cookies 148
5.1.3 URL重写 149
5.2 Java Servlet API的会话跟踪 149
5.2.1 HttpSession接口 150
5.2.2 Session的生命周期 151
5.2.3 Cookie的应用 165
5.2.4 Session和Cookie的深入研究 173
5.3 Session的持久化 175
5.4 小结 176
第6章 Servlet的异常处理机制 177
6.1 声明式异常处理 178
6.1.1 HTTP错误代码的处理 178
6.1.2 Java异常的处理 182
6.2 程序式异常处理 185
6.2.1 在try-catch语句中处理异常 185
6.2.2 使用RequestDispatcher来处理异常 188
6.3 小结 191
第7章 开发线程安全的Servlet 192
7.1 多线程的Servlet模型 192
7.2 线程安全的Servlet 193
7.2.1 变量的线程安全 193
7.2.2 属性的线程安全 202
7.3 SingleThreadModel接口 206
7.4 小结 206

JSP篇
第8章 JSP技术 207
8.1 JSP简介 207
8.2 JSP的运行机制 208
8.3 JSP的语法 213
8.3.1 指令元素(directive element) 213
8.3.2 脚本元素(scripting element) 218
8.3.3 动作元素(action element) 220
8.3.4 注释 228
8.4 JSP的隐含对象 229
8.4.1 pageContext 229
8.4.2 out 230
8.4.3 page 231
8.4.4 exception 231
8.5 对象和范围 232
8.6 留言板程序 235
8.7 留言板管理程序 244
8.8 JSP文档 250
8.8.1 JSP文档的标识 251
8.8.2 JSP文档中的元素语法 251
8.9 小结 255
第9章 JSP与JavaBean 256
9.1 JavaBean简介 256
9.1.1 属性的命名 257
9.1.2 属性的类型 259
9.2 在JSP中使用JavaBean 259
9.2.1 260
9.2.2 261
9.2.3 262
9.2.4 示例 262
9.3 网上书店程序 267
9.4 小结 291
第10章 JSP开发的两种模型 292
10.1 模型1 292
10.2 模型2 296
10.3 MVC模式的实现总结 303
10.4 小结 303
第11章 标签库(Tag Library) 304
11.1 标签库API 304
11.1.1 标签的形式 304
11.1.2 Tag接口 306
11.1.3 IterationTag接口 307
11.1.4 BodyTag接口 309
11.2 标签库描述符 310
11.2.1 元素 311
11.2.2 元素 312
11.2.3 元素 313
11.2.4 元素 313
11.2.5 元素 316
11.2.6 元素 316
11.3 传统标签的开发 318
11.3.1 实例一:标签 318
11.3.2 实例二:标签 321
11.3.3 实例三:标签 323
11.3.4 实例四:标签 326
11.3.5 实例五:标签 331
11.4 简单标签的开发 337
11.4.1 SimpleTag接口 337
11.4.2 实例一:标签 339
11.4.3 实例二:标签 341
11.5 自定义标签开发总结 343
11.6 小结 343
第12章 表达式语言(EL) 344
12.1 语法 344
12.1.1 “[ ]”和“.”操作符 344
12.1.2 算术操作符 345
12.1.3 关系操作符 346
12.1.4 逻辑操作符 346
12.1.5 Empty操作符 346
12.1.6 条件操作符 346
12.1.7 圆括号 346
12.1.8 操作符的优先级 346
12.2 隐含对象 347
12.3 命名变量 348
12.4 保留的关键字 349
12.5 函数 349
12.6 小结 351
第13章 JSP标准标签库(JSTL) 352
13.1 JSTL简介 352
13.2 配置JSTL 353
13.3 Core标签库 354
13.3.1 一般用途的标签 354
13.3.2 条件标签 358
13.3.3 迭代标签 361
13.3.4 URL相关的标签 364
13.4 I18N标签库 369
13.4.1 国际化标签 369
13.4.2 格式化标签 375
13.5 SQL标签库 384
13.5.1 384
13.5.2 385
13.5.3 389
13.5.4 390
13.5.5 390
13.5.6 392
13.6 XML标签库 393
13.6.1 核心操作 394
13.6.2 流程控制 397
13.6.3 转换操作 401
13.7 Functions标签库 404
13.7.1 fn:contains 404
13.7.2 fn:containsIgnoreCase 405
13.7.3 fn:startsWith 405
13.7.4 fn:endsWith 406
13.7.5 fn:indexOf 407
13.7.6 fn:replace 407
13.7.7 fn:substring 408
13.7.8 fn:substringBefore 409
13.7.9 fn:substringAfter 410
13.7.10 fn:split 410
13.7.11 fn:join 411
13.7.12 fn:toLowerCase 412
13.7.13 fn:toUpperCase 413
13.7.14 fn:trim 413
13.7.15 fn:escapeXml 414
13.7.16 fn:length 414
13.8 小结 415
第14章 标签文件(Tag Files) 416
14.1 标签文件的语法 416
14.2 一个简单的标签文件 416
14.3 标签文件的隐含对象 420
14.4 标签文件的指令 421
14.4.1 tag指令 421
14.4.2 attribute指令 423
14.4.3 variable指令 423
14.5 标签文件实例讲解 425
14.5.1 实例一:标签 425
14.5.2 实例二:标签 426
14.6 动作元素 428
14.7 动作元素 428
14.8 小结 429

应用篇
第15章 Servlet监听器 430
15.1 监听器接口 430
15.2 ServletContextListener接口 431
15.3 HttpSessionBindingListener接口 433
15.4 在线人数统计程序 434
15.5 小结 441
第16章 Filter在Web开发中的应用 442
16.1 过滤器概述 442
16.2 Filter API 443
16.2.1 Filter接口 444
16.2.2 FilterConfig接口 444
16.2.3 FilterChain接口 445
16.3 过滤器的部署 445
16.4 过滤器的开发 448
16.5 对用户进行统一验证的过滤器 450
16.6 对请求和响应数据进行替换的过滤器 456
16.7 对响应内容进行压缩的过滤器 467
16.8 小结 474
第17章 中文乱码问题与国际化 475
17.1 中文乱码问题产生的由来 475
17.1.1 常用字符集 475
17.1.2 对乱码产生过程的分析 478
17.2 中文乱码问题的解决方案 480
17.3 使用过滤器解决中文问题 482
17.4 让Tomcat支持中文文件名 487
17.5 国际化与本地化 488
17.5.1 Locale 488
17.5.2 资源包 490
17.5.3 消息格式化 492
17.5.4 编写国际化的Web应用程序 493
17.6 小结 498
第18章 开发安全的Web应用程序 499
18.1 概述 499
18.2 理解验证机制 501
18.2.1 HTTP Basic Authentication 501
18.2.2 HTTP Digest Authentication 502
18.2.3 HTTPS Client Authentication 502
18.2.4 Form Based Authentication 502
18.3 声明式安全 503
18.3.1 元素 503
18.3.2 多个安全约束的联合 506
18.3.3 元素 507
18.3.4 基本验证的实现 508
18.3.5 基于表单验证的实现 510
18.3.6 使用数据库保存用户名和密码 513
18.4 程序式安全 517
18.5 SQL注入攻击的防范 520
18.6 小结 522
第19章 避免表单的重复提交 523
19.1 在客户端避免表单的重复提交 523
19.2 在服务器端避免表单的重复提交 526
19.3 小结 534
第20章 使用Eclipse开发Web应用 535
20.1 Eclipse介绍 535
20.1.1 下载并安装Eclipse 535
20.1.2 Eclipse开发环境介绍 536
20.1.3 配置Eclipse 540
20.2 文件的上传 544
20.2.1 基于表单的文件上传 544
20.2.2 文件上传格式分析 545
20.2.3 commons-fileupload组件 546
20.2.4 文件上传实例 548
20.3 文件的下载 561
20.4 给图片添加水印和文字 570
20.5 小结 574
第21章 Servlet 3.0新特性详解 576
21.1 新增的注解 577
21.1.1 @WebServlet注解 577
21.1.2 @WebFilter注解 579
21.1.3 @WebInitParam注解 580
21.1.4 @WebListener注解 581
21.1.5 @MultipartConfig注解 582
21.2 异步处理 582
21.2.1 实例:计算斐波那契数列 585
21.2.2 AsyncListener 588
21.3 动态添加和配置Web组件 590
21.3.1 实例一:实现ServletContextListener接口来添加Servlet 592
21.3.2 实例二:实现ServletContainerInitializer接口来添加组件 593
21.4 Web片段和可插性支持 596
21.4.1 Web模块开发 597
21.4.2 解决Web模块加载顺序的问题 599
21.5 HttpServletRequest 对文件上传的支持 601
21.6 总结 605
附录A 快速掌握HTML 606
A.1 WWW简介 606
A.2 快速掌握HTML 608
A.2.1 HTML(Hypertext Markup Language) 608
A.2.2 HTML元素的四种形式 608
A.2.3 第一个页面 608
A.2.4 第二个页面 609
A.2.5 与段落控制相关的标签 610
A.2.6 控制文本的显示 611
A.2.7 如何输入特殊的字符 613
A.2.8 注释 615
A.2.9 列表 615
A.2.10 表格 619
A.2.11 HTML交互式表单 622
A.2.12 其他常用标签 629
A.2.13 框架 633
A.3 小结 634
附录B 解析HTTP 635
B.1 概述 635
B.2 HTTP URL 636
B.3 HTTP请求 637
B.3.1 请求行 637
B.3.2 消息报头 638
B.3.3 请求正文 638
B.4 HTTP响应 639
B.4.1 状态行 639
B.4.2 消息报头 641
B.4.3 响应正文 641
B.5 HTTP消息 642
B.6 实验 647
B.7 小结 649
附录C server.xml文件 650
C.1 顶层元素 651
C.1.1 Server元素 651
C.1.2 Service元素 651
C.2 连接器 652
C.2.1 HTTP连接器 652
C.2.2 AJP连接器 654
C.3 容器 654
C.3.1 Engine元素 654
C.3.2 Host元素 655
C.3.3 Context元素 656
C.4 小结 657
附录D web.xml文件 658
D.1 元素 659
D.2 元素 659
D.3 元素 660
D.4 元素 660
D.5 元素 660
D.6 元素 660
D.7 元素 661
D.8 元素 662
D.9 元素 662
D.10 元素 664
D.11 元素 664
D.12 元素 664
D.13 元素 665
D.14 元素 665
D.15 元素 665
D.16 元素 667
D.17 元素 668
D.18 元素 669
D.19 元素 669
D.20 元素 670
D.21 元素 670
D.22 元素 671
D.23 元素 671
D.24 元素 671
D.25 小结 672

读者评论

  • 请问孙鑫老师另一半书Servlet/JSP应用开发哪里有售?

    天下风云出我辈发表于 2023/3/9 19:19:41
  • 第105页, 上 数第二行中,WelcomeServlet.class
    改成: CreateDBServlet.class

    yinpf发表于 2019/11/16 20:33:17
  • 第83页, 10. public class WelcomeYou extends HttpServlet
    改成: public class WelcomeServlet extends HttpServlet

    yinpf发表于 2019/11/9 23:58:47
  • 第84页,27. out.println(“</body></head></html>“);
    改为: out.println(“</body></html>“);

    yinpf发表于 2019/11/9 23:54:22
  • 第84页,25. out.println(“</title><body>“);
    改为: out.println(“</title></head><body>“);

    yinpf发表于 2019/11/9 23:43:09

下载资源

同系列书

相关图书

亿级流量系统架构设计与实战

李琛轩 (作者)

本书涵盖了亿级用户应用后台通用的技术和系统架构设计思路,在内容结构上分为三大篇:架构知识篇(第1~3章),作为全书的基础知识篇,首先介绍后台的关键组件构成以及机...

 

算法笔记(第2版)

刁瑞 谢妍 (作者)

ChatGPT掀起了现象级的风暴,赶超ChatGPT潮流,算法突破是关键。 本书介绍了若干常见算法,涉及排序、哈希、动态规划与近似算法、高斯消去法、图论与线性...

 

看漫画学Python:有趣、有料、好玩、好用(全彩修订版)

关东升 赵大羽 (作者)

ython是一门既简单又强大的编程语言,被广泛应用于数据分析、大数据、网络爬虫、自动化运维、科学计算和人工智能等领域。Python也越来越重要,成为国家计算机等...

 

Linux从入门到精通

张启玉 (作者)

本书以CentOS 7.8为演示系统,以阿里云为演示服务器,从Linux常用命令入手,从一毕业就要入职公司的上手要求出发,重实战、轻原理,目的就是要带领读者从一...

 

Knative最佳实践

Jacques Chester (作者) 赵吉壮 杨云锋 (译者)

本书主要围绕 Knative 进行展开,主要作者是 Knative 专家(社区作者)Jacques Chester ,先后从 Knative 构建、扩缩容、事件...

¥118.00

看漫画学Python 2:有趣、有料、好玩、好用(全彩进阶版)

关东升 ,赵大羽 (作者)

本书是《看漫画学Python》的进阶版本,继续秉承有趣、有料、好玩、好用的理念,并继续采用《看漫画学Python》一书中3个不同的漫画人物角色,通过这3个角色之...