标题：JavaWeb开发与实战
版权信息
  书 名: JavaWeb开发与实战
作　者：刘伟
出版社： 科学出版社，北京科海电子出版社
出版时间： 2008
ISBN: 9787030232991
开本： 16
定价: 56.00 元
内容简介
《JavaWeb开发与实战》采用理论阐述与项目演示相结合的方式，全面讲解了JavaWeb编程所需的核心技术，并涵盖一些高级技术主题。主要内容包括Web应用程序运行原理、主流集成开发工具（Eclipse/MyEclipse）和运行环境（Tomcat）的配置和使用、Servlet、JSP、JDBC、JSP表达式语言（EL）、Servlet监听器和过滤器、定制标记库、JSTL、MVC模式、DAO设计模式、数据源和连接池、文件上传、JavaMail和分页显示、Web编程中文乱码问题及解决方案、应用程序的打包和部署等。书中还深入讲解了客户端验证框架JSValidation、在线文本编辑器FCKeditor和ApacheCommons的一些类库等功能强大的实用开发工具。另外，书中提供了大量的实例代码，读者可以自由取用，这些代码功能强大，适合解决JavaWeb开发中的实际问题。《JavaWeb开发与实战》论述精准而深刻，程序实例丰富实用。《JavaWeb开发与实战》要求读者具备Java编程语言和HTML基础，适合用作普通高校教材或相关职业培训教材，更是JavaWeb初学者和程序员的首选技术参考书。
作者简介
刘伟老师，北京大学硕士，8年Java，J2EE，J2ME开发与培训经验，资深软件架构师、软件开发管理人员，主持并参与了多个大型J2EE项目开发。张利国老师清华大学双学士，10年Java软件开发及教学经验，曾任北京新东方学校Java软件金牌讲师，荣获2004年度新东方教育科技集团优秀教师。主持和参与开发了多个J2EE大型项目。2003年出版《Java实用案例教程》一书，广受好评。两位作者主持开发的项目：·北京电信网上业务受理系统·电信资产管理系统·GSM短信平台·Infordeliver公司一路透社基于Java+XML技术的新闻软件开发项目·银河证券客户交易结算资金第三方存管（多银行模式）业务模块开发·交通部EHR项目开发
编辑推荐
《JavaWeb开发与实战》为您呈现的是“图书详解+多媒体视频+网站技术支持”三位一体式学习环境。
图书详解：《JavaWeb开发与实战》讲解了在当前主流开发平台下进行、JavaWeb开发所需的核心技术，包括一些高级技术主题。作者在讲解技术的同时，将现代企业中采用的项目迭代式开发方法运用到对知识的讲解中，即对同一个项目使用不同的技术实现，使其功能逐步增强。例如书中“网络留言本”项目的9个版本的实现。这种技术讲解形式让您能综合运用所学知识，并为学习带来无穷乐趣，在技术的不断提升中轻松找到成就感。
多媒体视频：《JavaWeb开发与实战》DVD中收录了长达33/J、时的JavaWeb课程语音视频讲解，堪称是作者的培训课堂实录。光盘内容基于《JavaWeb开发与实战》，但不仅限于《JavaWeb开发与实战》。您从中不但能看到《JavaWeb开发与实战》所有内容的视频体现，更有书本之外的知识点滴，以及作者在技术讲解中不时进发的思想和智慧。如身临课堂实境，真正超值。
如今，Java技术在企业级开发中占据着绝对主导的地位，而JavaWeb是Java企业级开发的核心，所以职场中对，JavaWeb程序员的需求很大。《JavaWeb开发与实战》完全从实战的角度出发，并结合大量工程实例。学完《JavaWeb开发与实战》，您完全可以胜任JavaWeb开发的工作。
目录
第1章Web开发工具的安装与使用1
视频时长：50分钟
1.1JDK的安装1
1.2Tomcat的安装和配置2
1.2.1下载Tomcat3
1.2.2修改context.xml和server.xml3
1.2.3修改tomcat-users.xml4
1.2.4启动和关闭Tomcat4
1.2.5Tomcat的目录结构5
1.3　Eclipse的安装与使用6
1.3.1Eclipse的历史6
1.3.2Eclipse的架构6
1.3.3Eclipse版本说明7
1.3.4Eclipse的下载与安装7
1.3.5Eclipse的汉化8
1.3.6Eclipse的启动8
1.3.7Eclipse界面说明9
1.3.8Eclipse构建路径调整12
1.3.9Eclipse编译器调整13
1.4　实例：Eclipse开发Java应用程序13
hello项目，熟悉Eclipse的环境，体验在Eclipse中如何快速方便地进行Java应用程序的开发。
1.4.1新建Java项目13
1.4.2新建HelloWorld类14
1.4.3增加属性与方法15
1.4.4格式化源程序17
1.4.5运行输出17
1.4.6调试代码17
1.5　MyEclipse18
1.5.1MyEclipse概述18
1.5.2MyEclipse的下载19
1.5.3MyEclipse安装19
1.5.4在MyEclipse中配置Tomcat服务器20
1.6　更多参考信息21
第2章Web编程技术基础22
视频时长：1小时20分钟
2.1　Internet的起源22
2.1.1TCP/IP协议23
2.1.2TCP/IP的四层结构23
2.1.3Application层常用协议24
2.2　WWW25
2.2.1URL25
2.2.2HTML26
2.2.3HTTP26
2.2.4Web服务器26
2.2.5浏览器27
2.3　Web动态编程28
2.4　Servlet29
2.5　实例：JavaWeb服务器29
webserver项目，编写一个JavaWeb服务器，加深对HTTP协议的认识。
2.5.1目标30
2.5.2新建Java项目30
2.5.3新建Java文件30
2.5.4运行输出33
2.6　更多参考信息34
第3章Servlet编程35
视频时长：1小时40分钟
3.1　Servlet的发展35
3.2　Servlet的结构35
3.2.1javax.servlet.Servlet36
3.2.2javax.servlet.GenericServlet37
3.2.3javax.servlet.http.HttpServlet37
3.3　实例（一）：编写Servlet38
3.3.1目标38
3.3.2编写Servlet源程序38
3.3.3建立JavaWeb应用目录结构39
3.3.4编写web.xml文件39
3.3.5运行Servlet40
3.4　实例（二）：使用MyEclipse开发Servlet40
webproject1项目，演示利用MyEclipse插件如何创建JavaWeb项目和编写Servlet文件。
3.4.1目标40
3.4.2新建WebProject40
3.4.3新建Servlet文件43
3.4.4程序解释45
3.4.5部署Web应用程序45
3.4.6运行输出48
3.4.7Servlet文件调试48
3.5　Servlet生命周期描述49
3.6　实例（三）：Servlet获取初始化的参数50
3.6.1目标50
3.6.2新建GetInitParameterServlet类50
3.6.3运行输出52
3.6.4程序解释52
3.7　实例（四）：Servlet获取服务器的运行参数52
3.7.1目标52
3.7.2新建GetServerInfoServlet类52
3.7.3运行输出54
3.7.4程序解释54
3.8　实例（五）：Servlet获得头信息55
3.8.1目标55
3.8.2新建GetHeaderInfoServlet类55
3.8.3运行输出56
3.8.4程序解释57
3.9　更多参考信息57
第4章Servlet处理表单数据58
视频时长：3小时
4.1　HTML表单58
4.1.1Form58
4.1.2Inputtext59
4.1.3Inputpassword59
4.1.4Inputradio59
4.1.5Inputcheckbox60
4.1.6Select单选60
4.1.7Select多选61
4.1.8Textarea61
4.1.9Submit按钮62
4.1.10Reset按钮63
4.2　Servlet接收HTML表单信息63
4.3　实例（一）：Servlet处理HTML表单数据（1）63
webproject2项目，演示如何通过HttpServletRequest对象的getParameter方法获取客户浏览器发送过
来的表单数据。
4.3.1目标63
4.3.2新建webproject2项目64
4.3.3新建LoginFormServlet64
4.3.4运行输出65
4.3.5程序解释66
4.3.6解决表单中文参数乱码问题66
4.4　实例（二）：Servlet处理HTML表单数据（2）67
4.4.1目标67
4.4.2新建login.htm67
4.4.3新建LoginServlet.java69
4.4.4运行输出70
4.4.5程序解释70
4.5　实例（三）：网络调查表（1）70
4.5.1目标70
4.5.2新建survey.htm70
4.5.3新建SurveyServlet73
4.5.4运行输出74
4.5.5程序解释75
4.6　实例（四）：网络调查表（2）76
4.6.1目标76
4.6.2新建survey2.htm76
4.6.3新建SurveyServlet277
4.6.4运行输出78
4.6.5程序解释79
4.7　客户端验证表单输入内容79
4.8　实例（五）：HTML表单增加JavaScript验证79
4.8.1目标79
4.8.2新建login2.htm79
4.8.3运行输出80
4.8.4程序解释81
4.9　JSValidation验证框架81
4.9.1下载JSValidation82
4.9.2validation-config.xml解释82
4.10　实例（六）：使用JSValidation验证框架84
4.10.1目标84
4.10.2JSvalidation配置84
4.10.3编写survey3.htm85
4.10.4编写validation-config.xml文件85
4.10.5运行输出86
4.10.6程序解释87
4.11　FCKeditor87
4.11.1FCKeditor主要功能特性87
4.11.2下载FCKeditor88
4.11.3FCKeditor的使用88
4.12　实例（七）：使用FCKeditor89
fckeditordemo项目，演示FCKeditor组件的使用。
4.12.1新建fckeditordemo项目89
4.12.2新建addContent.htm90
4.12.3新建AddContentServlet91
4.12.4运行输出92
4.12.5FCKeditor类说明92
4.12.6FCKeditor组件文件精简93
4.13　更多参考信息94
第5章JDBC、连接池与数据源95
视频时长：3小时30分钟
5.1　JDBC的历史95
5.2　JDBC概述96
5.3　JDBC驱动程序97
5.4　实例（一）：安装和配置Oracle的JDBC驱动程序97
5.4.1目标97
5.4.2获得Oracle驱动程序97
5.4.3配置Oracle驱动程序97
5.5　JDBC编程98
5.5.1建立数据库连接98
5.5.2向数据库中提交SQL99
5.5.3处理数据库返回的结果100
5.5.4释放数据库连接101
5.6　实例（二）：JDBC操作Oracle数据库的例子102
jdbcexample项目，操作Oracle数据库的例子。
5.6.1目标102
5.6.2建表102
5.6.3新建项目与JDBCExample.java文件102
5.7　实例（三）：网络留言本V1.0104
guestbookv1.0项目，通过使用JDBC、HTML和Servlet技术，实现网络留言本。
5.7.1目标104
5.7.2建表与建序列104
5.7.3新建guestbook项目105
5.7.4项目核心文件列表106
5.7.5修改validation-framework.js文件106
5.7.6编辑jsvalidation-config.xml106
5.7.7编辑addMessage.htm107
5.7.8编辑StringUtil.java109
5.7.9编辑AddMessageServlet.java110
5.7.10编辑GetMessagesServlet.java112
5.7.11运行输出114
5.8　数据库连接池115
5.9　实例（四）：编写JDBC连接池程序116
pooling项目，演示如何编写实现一个数据库连接池。
5.9.1目标116
5.9.2待解决的核心问题117
5.9.3新建pooling项目117
5.9.4编辑dbpool.properties117
5.9.5编辑ConnectionPool.java117
5.9.6编辑ConnectionPoolTest.java120
5.9.7运行输出121
5.9.8程序待改进的地方121
5.10　JDBC数据源122
5.11　实例（五）：配置Tomcat的连接池和数据源122
5.12　实例（六）：网络留言本V1.1123
guestbookv1.1项目，修改网络留言本，把获得数据库连接的方式改造成通过连接池获取数据库连接。
5.12.1目标123
5.12.2新建guestbook2项目123
5.12.3修改JavaBuildPath124
5.12.4修改validation-framework.js文件124
5.12.5修改addMessage.htm文件124
5.12.6修改AddMessageServlet.java124
5.12.7修改GetMessagesServlet.java125
5.12.8运行输出125
5.13CommonsDbUtils126
5.13.1DbUtils类126
5.13.2ResultSetHandler接口127
5.13.3MapListHandler类127
5.13.4BeanListHandler类127
5.13.5QueryRunner类127
5.13.6DbUtil使用例子128
5.14　实例（七）：网络留言本V1.2131
guestbookv1.2项目，修改网络留言本，把操作数据库的代码修改成使用DbUtils类库。
5.14.1目标131
5.14.2新建guestbook3项目131
5.14.3修改addMessage.htm文件131
5.14.4修改AddMessageServlet.java131
5.14.5修改GetMessagesServlet.java133
5.14.6运行输出135
5.15　更多内容135
第6章Servlet处理Cookie136
视频时长：51分钟
6.1　Cookie是什么136
6.2　Cookie的典型应用137
6.2.1实现“记住我”功能137
6.2.2定制个性化页面138
6.2.3记录用户访问动作138
6.3　Cookie的运行机制139
6.4　使用Cookie的注意事项139
6.5　Cookie编程139
6.5.1生成Cookie对象139
6.5.2设定Cookie对象有效期140
6.5.3设定Cookie对象的路径与域名140
6.5.4发送Cookie对象140
6.5.5读取Cookie对象141
6.5.6修改Cookie141
6.5.7删除Cookie142
6.6　实例：Servlet中Cookie的编程142
webproject3项目，演示JavaWeb编程中关于Cookie的核心代码。
6.6.1目标142
6.6.2新建项目142
6.6.3编辑cookieInput.htm142
6.6.4编辑SetCookiesServlet.java143
6.6.5编辑GetCookiesServlet.java144
6.6.6运行输出145
第7章Servlet会话编程147
视频时长：1小时50分钟
7.1　会话是什么147
7.2　会话的典型应用148
7.2.1网店中的购物车功能148
7.2.2用户权限控制148
7.2.3跨Servlet/JSP传递参数149
7.3　会话的底层实现方式149
7.4　Servlet会话编程149
7.5　实例（一）：演示会话对象的使用150
webproject4项目，演示HttpSession类提供的主要方法。
7.5.1目标150
7.5.2新建项目150
7.5.3编辑DemoSessionServlet151
7.5.4运行输出152
7.6　实例（二）：使用会话实现网络购物车153
shoppingcart项目，演示如何使用会话功能实现网络购物车功能。
7.6.1目标153
7.6.2功能说明153
7.6.3新建项目154
7.6.4编辑CartItem.java154
7.6.5编辑ShoppingCart.java155
7.6.6编辑AddShoppingCartServlet.java157
7.6.7编辑GetShoppingCartServlet.java159
7.6.8编辑displayItems.htm161
7.6.9运行输出163
7.6.10需要改进的地方164
第8章JavaServerPages（JSP）165
视频时长：2小时49分钟
8.1　JavaServerPages的起源165
8.2JSP与Servlet的关系165
8.3　实例（一）：开发第一个JSP页面166
webproject5项目，演示如何使用Eclipse和MyEclipse开发JSP页面，同时实现了两种风格的网页计数器。
8.3.1目标166
8.3.2新建Webproject项目166
8.3.3新建first.jsp文件166
8.3.4JSP页面的可视化编辑167
8.3.5运行输出168
8.3.6代码解释168
8.4　JSP内部运行机制169
8.5　JSP语法173
8.5.1JSP代码注释173
8.5.2指令（Directive）标记174
8.5.3声明（Declaration）标记176
8.5.4Scriptlet标记177
8.5.5表达式（Expression）标记177
8.6　实例（二）：JSP语法演示177
8.6.1目标177
8.6.2新建JSP文件177
8.6.3运行输出179
8.7　动作（action）179
8.7.1动作180
8.7.2动作181
8.8　JSP内置对象182
8.8.1out对象182
8.8.2request对象183
8.8.3response对象183
8.8.4session对象183
8.8.5application对象183
8.8.6page对象184
8.8.7pageContext对象184
8.8.8exception对象185
8.8.9config对象185
8.9　实例（三）：网页计数器V1.0185
8.9.1目标185
8.9.2编辑count.jsp页面186
8.9.3程序解释186
8.9.4运行输出186
8.10　实例（四）：网页计数器V1.1187
8.10.1目标187
8.10.2准备数字图形文件187
8.10.3编辑count2.jsp页面187
8.10.4编辑CountFileHandler.java188
8.10.5运行输出189
8.11　实例（五）：Web应用错误处理解决方案189
8.11.1目标189
8.11.2HTTP常见错误代码190
8.11.3设置web.xml190
8.11.4运行输出192
8.12　实例（六）：网络留言本V1.3192
guestbookv1.3项目，完全使用JSP技术实现网络留言本。
8.12.1目标192
8.12.2新建guestbook4项目192
8.12.3项目核心文件列表193
8.12.4编辑header.jsp193
8.12.5编辑footer.htm194
8.12.6编辑addMessage.jsp194
8.12.7编辑addMessageHandler.jsp196
8.12.8编辑getMessages.jsp197
8.12.9运行输出199
8.13更多参考信息199
第9章JavaBeans200
视频时长：2小时40分钟
9.1　引入JavaBeans200
9.2　JavaBeans的编写201
9.3　useBean动作202
9.4　setProperty动作203
9.5　getProperty动作203
9.6　JavaBeans对象的作用范围203
9.6.1pageScope204
9.6.2requestScope204
9.6.3sessionScope205
9.6.4applicationScope205
9.7　使用JavaBeans的好处206
9.8　实例（一）：JSP页面使用JavaBeans207
webproject6项目，演示如何在JSP页面中运用JavaBeans。
9.8.1目标207
9.8.2新建项目207
9.8.3新建Book.java207
9.8.4编辑book.htm207
9.8.5编辑displayBook.jsp208
9.8.6运行输出209
9.9　实例（二）：网络留言本V1.4209
guestbookv1.4项目，使用JSP和JavaBeans技术实现网络留言本。
9.9.1目标209
9.9.2新建guestbook5项目209
9.9.3项目核心文件列表210
9.9.4新建OracleUtil.java210
9.9.5新建Guestbook.java212
9.9.6修改addMessageHandler.jsp213
9.9.7编辑getMessages.jsp214
9.9.8运行输出216
9.9.9项目需要改进的地方216
9.10　CommonsBeanUtils216
9.10.1CommonsBeanUtils的下载217
9.10.2实例（三）：使用BeanUtils的例子217
9.10.3访问JavaBeans属性223
9.10.4设定JavaBeans属性224
9.10.5复制JavaBeans对象的属性224
9.10.6动态创建JavaBeans对象224
9.10.7ResultSetDynaClass226
9.10.8RowSetDynaClass227
9.10.9RowSetDynaClass与MapListHandler的比较228
9.11　更多参考信息229
第10章MVC模式230
视频时长：54分钟
10.1　JSPModel1230
10.2JSPModel2231
10.3　MVC架构模式232
10.3.1视图（View）232
10.3.2模型（Model）232
10.3.3控制器（Controller）232
10.3.4MVC的优缺点233
10.4　实例：网络留言本V1.5233
guestbookv1.5项目，使用MVC模式，运用JSP、Servlet和JavaBeans技术实现网络留言本。
10.4.1目标233
10.4.2新建guestbook6项目233
10.4.3项目核心文件列表234
10.4.4修改AddMessageServlet.java234
10.4.5修改GetMessagesServlet.java236
10.4.6修改addMessage.jsp236
10.4.7修改GetMessages.jsp237
10.4.8新建addResult.jsp237
10.4.9运行输出237
10.4.10程序运行流程分析237
10.4.11两种转向的区别238
10.5　基于MVC的Web开发框架240
10.5.1Struts240
10.5.2WebWork240
10.5.3SpringMVC240
10.6　更多参考信息241
第11章JSPExpressionLanguage242
视频时长：1小时06分钟
11.1　JSPEL的基本用法242
11.2　JSPEL运算符243
11.3使用JSPEL读取JavaBeans属性243
11.4　JSPEL内置对象245
11.4.1作用范围相关对象245
11.4.2param或paramValues对象245
11.4.3header或headerValues对象245
11.4.4cookie内置对象245
11.4.5initParam对象246
11.4.6pageContext对象246
11.5　设定JSP不使用JSPEL246
11.6　实例：演示JSPEL的用法246
webproject7项目，演示JSPEL的用法。
11.6.1目的246
11.6.2新建Web项目247
11.6.3编辑elExample1.jsp247
11.6.4编辑elExample2.jsp248
11.6.5编辑elExample3.jsp250
11.6.6编辑elExample4.jsp251
11.6.7编辑elExample5.jsp252
11.6.8编辑elExample6.jsp254
11.6.9编辑elExample7.jsp255
11.6.10编辑elExample8.jsp257
11.6.11编辑elExample9.jsp258
11.6.12编辑elExample10.jsp258
11.6.13修改web.xml259
第12章定制标记库260
视频时长：1小时20分钟
12.1　定制标记库概述260
12.2　实例（一）：编写测量代码运行时间的定制标记261
webproject8项目，演示编写定制标记库的基本步骤和方法。
12.2.1目标261
12.2.2新建Web项目261
12.2.3编辑TimerTag.java261
12.2.4编辑util.tld文件263
12.2.5编辑timerTag.jsp263
12.2.6运行输出264
12.3　为定制标记增加属性264
12.4　实例（二）：编写显示日期时间的标记265
12.4.1目标265
12.4.2编辑DateTimeTag.java265
12.4.3修改util.tld文件266
12.4.4编辑dateTimeTag.jsp267
12.4.5运行输出267
12.5　实例（三）：编写循环执行的定制标记267
12.5.1目标267
12.5.2编辑LoopTag.java268
12.5.3修改util.tld268
12.5.4编辑loopTag.jsp269
12.5.5运行输出269
12.6　定制标记运行原理270
12.6.1JspTag接口270
12.6.2Tag接口270
12.6.3IterationTag接口271
12.6.4TagSupport类271
12.7BodyTag接口272
12.8BodyTagSupport类273
12.9　实例（四）：编写过滤HTML代码的标记274
12.9.1目标274
12.9.2编辑FilterHtmlTag.java274
12.9.3修改util.tld275
12.9.4运行输出275
12.10　脚本变量276
12.10.1使用TagExtraInfo的方式276
12.10.2设置元素277
12.10.3两种设置脚本变量的比较278
12.11　实例（五）：编写使用Cookie的定制标记278
12.11.1目标278
12.11.2编辑CookieTag.java278
12.11.3编辑CookieTei.java279
12.11.4修改tld文件280
12.11.5编辑cookieTag.jsp280
12.11.6运行输出281
12.12　SimpleTag281
12.13　SimpleTagSupport282
12.14　实例（六）：编写实现过滤HTML的标记V1.1282
12.14.1目标282
12.14.2编辑FilterHtmlSimpleTag.java282
12.14.3配置TLD文件283
12.14.4编辑filterHtmlSimpleTag.jsp283
12.14.5运行输出284
12.15　标记处理类编写小结284
12.16　Tag文件285
12.16.1编写Tag文件285
12.16.2Tag文件可以使用的指令286
12.17　标记库打包291
12.18　常用开源定制标记库介绍292
12.18.1JSTL292
12.18.2JakartaTaglibs292
12.18.3Displaytag292
第13章JSTL294
视频时长：2小时14分钟
13.1　JSTL概述294
13.2　下载安装JSTL295
13.3　Core标记库296
13.3.1标记296
13.3.2标记297
13.3.3标记298
13.3.4标记299
13.3.5标记300
13.3.6标记300
13.3.7标记301
13.3.8301
13.3.9标记302
13.3.10标记304
13.3.11标记305
13.3.12标记306
13.3.13标记307
13.4　Format标记库308
13.4.1国际化308
13.4.2标记308
13.4.3标记309
13.4.4标记309
13.4.5标记310
13.4.6标记311
13.4.7标记312
13.4.8标记314
13.4.9标记315
13.4.10标记316
13.4.11标记316
13.4.12标记318
13.4.13标记318
13.5　XML标记库318
13.5.1标记319
13.5.2标记321
13.6　SQL标记库323
13.6.1标记323
13.6.2标记324
13.6.3标记326
13.6.4标记326
13.6.5标记327
13.6.6标记329
13.7　Functions标记库330
13.8　实例：网络留言本V1.6331
guestbookv1.6项目，改进网络留言本，在JSP页面中使用JSPEL和JSTL的Core标记库。
13.8.1目标331
13.8.2新建guestbook7项目332
13.8.3修改header.jsp332
13.8.4修改addMessage.jsp332
13.8.5修改addResult.jsp332
13.8.6修改getMessages.jsp333
13.8.7运行输出334
13.9　更多参考信息334
第14章Servlet监听器335
视频时长：32分钟
14.1　概述335
14.2　HttpSession监听器接口335
14.2.1HttpSessionListener335
14.2.2HttpSessionAttributeListener336
14.2.3HttpSessionBindingListener336
14.2.4HttpSessionActivationListener337
14.3　实例：统计网站在线人数337
webproject10项目，演示如何编写能够实时统计当前网站在线人数的程序。
14.3.1目标337
14.3.2新建项目337
14.3.3编辑CounterListener.java337
14.3.4编辑web.xml338
14.3.5编辑display.jsp338
14.3.6运行输出339
14.4　ServletContext监听器接口339
14.4.1ServletContextListener339
14.4.2ServletContextAttributeListener339
14.5　HttpServletRequest监听器340
14.5.1ServletRequestListener340
14.5.2ServletRequestAttributeListener340
第15章Servlet过滤器342
视频时长：2小时15分钟
15.1　概述342
15.2　javax.servlet.Filter接口343
15.2.1init()方法343
15.2.2destroy()方法343
15.2.3doFilter()方法344
15.3　配置过滤器344
15.4　过滤器的用途344
15.5　实例（一）：使用过滤器设定传输参数编码345
webproject11项目，使用Servlet过滤器技术，编写能解决页面传递中文参数乱码问题的程序。
15.5.1目标345
15.5.2新建项目345
15.5.3编辑EncodingFilter.java345
15.5.4编辑web.xml346
15.5.5编辑index.jsp346
15.5.6运行输出347
15.6　实例（二）：网络留言本V1.7348
guestbookv1.7项目，改进网络留言本，使用Servlet过滤器来实现对留言内容的管理功能。
15.6.1目标348
15.6.2新增admin表348
15.6.3新建guestbook8项目348
15.6.4编辑AdminUserServlet.java349
15.6.5编辑AuthenticationFilter.java351
15.6.6编辑ManageServlet.java352
15.6.7编辑login.jsp354
15.6.8修改validation-config.xml355
15.6.9编辑loginFail.jsp355
15.6.10编辑list.jsp356
15.6.11编辑edit.jsp357
15.6.12编辑updateResult.jsp358
15.6.13编辑deleteResult.jsp359
15.6.14修改web.xml359
15.6.15运行输出360
第16章文件上传与邮件发送361
视频时长：1小时52分钟
16.1　文件上传361
16.2　实例（一）：使用FileUpload实现文件上传362
webproject12项目，演示ApacheCommonsFileUpload组件实现文件上传，同时演示了使用ApacheCommonsEMail组件实现邮件发送。
16.2.1目的362
16.2.2新建webproject12项目362
16.2.3编辑uploadFile.jsp362
16.2.4编辑UploadServlet.java363
16.2.5编辑uploadResult.jsp365
16.2.6修改web.xml文件365
16.2.7程序运行365
16.3　JavaMail366
16.3.1JavaMail下载与安装367
16.3.2JavaMail核心类367
16.4　实例（二）：编写邮件发送程序V1.0369
16.4.1目标369
16.4.2编辑SendMail.java369
16.4.3程序运行370
16.5　实例（三）：编写邮件发送程序V1.1370
16.5.1目标370
16.5.2下载ApacheCommonsEmail组件370
16.5.3编辑sendMail.jsp370
16.5.4编辑SendMailServlet.java371
16.5.5编辑sendResult.jsp372
16.5.6运行输出372
16.6　实例（四）：编写邮件发送程序V1.2373
16.6.1目标373
16.6.2编辑SendAttachmentMailServlet.java373
16.6.3新建sendAttachmentMail.jsp375
16.6.4修改web.xml文件375
16.6.5程序运行376
16.7　更多参考信息376
第17章DAO设计模式与分页显示377
视频时长：3小时05分钟
17.1　DAO设计模式377
17.1.1DAO模式的实现377
17.1.2DAO模式的优势380
17.2　分页显示381
17.2.1Displaytag标记库381
17.2.2超大记录数的分页显示385
17.2.3Pager标记库391
17.3　实例：网络留言本V1.8393
guestbookv1.8项目，改进网络留言本，使用DAO设计模式、Displaytag和Pager标记库实现留言的分页显示。
17.3.1目标393
17.3.2新建guestbook9项目393
17.3.3修改GuestbookDAO.java394
17.3.4修改GuestbookDAOJdbc.java394
17.3.5编写Admin.java394
17.3.6编写AdminDAO.java395
17.3.7编写AdminDAOJdbc.java395
17.3.8修改AddMessageServlet.java396
17.3.9修改GetMessagesServlet.java397
17.3.10修改AdminUserServlet.java398
17.3.11修改ManageServlet.java398
17.3.12修改list.jsp401
17.3.13修改getMessages.jsp401
17.3.14修改web.xml403
17.3.15运行输出403
17.4　更多的参考信息403
第18章解决中文乱码404
视频时长：43分钟
18.1　字符集与编码方法404
18.1.1字符集（CharacterSet）404
18.1.2字符编码404
18.1.3ASCII405
18.1.4ISO8859-1406
18.1.5GB2312406
18.1.6GBK406
18.1.7GB18030407
18.1.8BIG5407
18.1.9Unicode407
18.2　Java中字符的表示与处理409
18.3　JavaWeb编程中文乱码解决方法409
18.3.1调用JSP页面显示乱码409
18.3.2调用Servlet页面显示乱码410
18.3.3POST表单传递参数乱码411
18.3.4URI方式传递参数乱码412
18.3.5Properties文件乱码413
18.4　更多参考信息413
第19章Web应用与web.xml414
视频时长：20分钟
19.1　Web应用414
19.1.1Web应用的目录结构414
19.1.2Web应用打包415
19.2　web.xml文件416
19.2.1web.xml的元素说明417
19.2.2Web应用初始化420
……