-- 作者:hongjunli
-- 发布时间:12/4/2008 7:08:00 PM
-- [分享]Tomcat与Java Web开发技术详解(第2版)已正式出版
此主题相关图片如下:
![按此在新窗口浏览图片](http://bbs.xml.org.cn/uploadfile/2008124198162886.jpg) 【内容简介】本书结合最新的Tomcat 6版本,详细介绍了开发Java Web应用的各种技术。主要内容包括:Tomcat和Java Web开发的基础知识、Java Web开发的高级技术、在Java Web应用中运用第三方提供的实用软件(如Struts、Velocity和Log4J)的方法,以及Tomcat的各种高级功能。 书中内容注重理论与实践相结合,列举了大量具有典型性和实用价值的Web应用实例,并提供了详细的开发和部署步骤。由于Java Web技术是SUN公司在Java Servlet规范中提出的通用技术,因此本书讲解的Java Web应用例子可以运行在任何一个实现了SUN的Servlet规范的Java Web服务器上。随书附赠光盘的内容为本书范例的源程序,以及本书涉及的部分软件的安装程序。 本书语言深入浅出、通俗易懂,无论对于Java Web开发的新手还是行家来说,本书都是精通Tomcat和开发Java Web应用的必备的实用手册。本书还可作为高校相关专业学生学习Java Web开发的参考书,以及企业Java Web培训教材,也可作为SUN公司的SCWCD(SUN Certified Web Component Developer)认证的辅导教材。 本书语言深入浅出、通俗易懂,无论对于Java Web开发的新手还是行家来说,本书都是精通Tomcat和开发Java Web应用的必备的实用手册。本书还可作为高校相关专业学生学习Java Web开发的参考书,以及企业Java Web培训教材,也可作为SUN公司的SCWCD(SUN Certified Web Component Developer)认证的辅导教材。 图书目录 第1篇 Java Web开发技术详解 依据SUN的Java Servlet规范和JSP规范,深入介绍了开发Java Web应用的各种技术。 第1章 Web运作原理探析 3 利用Java套接字(Socket)实现了一个简单的基于HTTP协议的客户程序和服务器程序。 1.1 Web的概念 3 1.2 HTML简介 4 1.3 URL简介 7 1.4 HTTP协议简介 7 1.4.1 HTTP请求格式 9 1.4.2 HTTP响应格式 11 1.4.3 正文部分的MIME类型 13 1.5 用Java套接字创建HTTP 客户与服务器程序 14 1.5.1 演示异构系统之间用HTTP 协议通信 17 1.5.2 演示对网页中的超级链接的 处理过程 19 1.5.3 演示对网页中的图片的 处理过程 20 1.6 Web发展历程 21 1.6.1 发布静态HTML文档 21 1.6.2 发布静态多媒体信息 22 1.6.3 提供浏览器端与用户的 动态交互功能 22 1.6.4 提供服务器端与用户的 动态交互功能 24 1.6.5 发布Web应用 29 1.6.6 发布Web服务 30 1.6.7 Web 2.0:全民共建的Web 32 1.7 处理HTTP请求参数及 HTML表单 33 1.8 客户端向服务器端上传文件 36 1.9 小结 41 1.10 思考题 42 第2章 Tomcat简介 45 Tomcat除了能够充当运行Servlet的容器,还提供了作为Web服务器的一些实用功能,如Tomcat管理和控制平台、安全域管理和Tomcat阀等。Tomcat已成为目前开发企业JavaWeb应用的最佳Servlet容器选择之一。 2.1 Tomcat概述 46 2.2 Tomcat作为Servlet容器的 基本功能 47 2.3 Tomcat的组成结构 48 2.4 Tomcat的工作模式 50 2.5 Tomcat的版本 52 2.6 安装和配置Tomcat 所需的资源 53 2.7 安装Tomcat 55 2.8 启动Tomcat并测试 Tomcat的安装 57 2.9 Tomcat的运行脚本 58 2.10 小结 59 2.11 思考题 60 第3章 第一个JavaWeb应用 63 以一个简单的helloapp应用为例,让初学者迅速获得开发JavaWeb应用的实际经验。 3.1 JavaWeb应用简介 63 3.2 创建JavaWeb应用 64 3.2.1 JavaWeb应用的目录结构 64 3.2.2 创建HTML文件 65 3.2.3 创建Servlet类 66 3.2.4 创建JSP文件 67 3.2.5 创建web.xml文件 68 3.3 在Tomcat中发布 JavaWeb应用 70 3.3.1 Tomcat的目录结构 70 3.3.2 按照默认方式发布 JavaWeb应用 71 3.3.3 Web组件的URL 72 3.3.4 配置Tomcat的<Context> 元素 75 3.3.5 配置Tomcat的虚拟主机 78 3.4 创建、配置和使用自定义 JSP标签 80 3.5 用批处理文件或ANT 编译范例 84 3.6 小结 85 3.7 思考题 86 第4章 Servlet技术(上) 89 要想精通Servlet编程,不仅要了解Servlet自身的用法,还要了解容器为它提供的十八般武器的用法。 4.1 Servlet API 90 4.1.1 Servlet接口 90 4.1.2 GenericServlet抽象类 91 4.1.3 HttpServlet抽象类 93 4.1.4 ServletRequest接口 96 4.1.5 HttpServletRequest接口 97 4.1.6 ServletResponse接口 100 4.1.7 HttpServletResponse接口 101 4.1.8 ServletConfig接口 104 4.1.9 ServletContext接口 105 4.2 JavaWeb应用的生命周期 108 4.2.1 启动阶段 108 4.2.2 运行时阶段 109 4.2.3 终止阶段 109 4.2.4 用Tomcat的管理平台管理 Web应用的生命周期 109 4.3 Servlet的生命周期 111 4.3.1 初始化阶段 111 4.3.2 运行时阶段 112 4.3.3 销毁阶段 112 4.3.4 演示Servlet的生命 周期的范例 113 4.4 ServletContext与Web 应用范围 115 4.4.1 在Web应用范围内存放 共享数据的范例 116 4.4.2 使用ServletContextListener 监听器 119 4.5 Servlet的服务方法 抛出异常 121 4.6 防止页面被客户端缓存 122 4.7 小结 123 4.8 思考题 124 第5章 Servlet技术(下) 129 进一步介绍Servlet的一些高级用法。 5.1 下载文件 129 5.2 上传文件 130 5.3 动态生成图像 136 5.4 读写Cookie 139 5.5 访问Web应用的工作目录 145 5.6 转发和包含 147 5.6.1 请求转发 148 5.6.2 包含 152 5.6.3 请求范围 154 5.7 重定向 155 5.8 访问Servlet容器内的其他 Web应用 158 5.9 避免并发问题 160 5.9.1 合理决定在Servlet中定义 的变量的作用域类型 162 5.9.2 使用Java同步机制对 多线程同步 164 5.9.3 被废弃的SingleThreadModel 接口 165 5.10 小结 166 5.11 思考题 169 第6章 JSP技术 171 包括JSP的运行机制和语法、JSP包含其他Web组件的方法、把请求转发给其他Web组件的方法,以及JSP的异常处理。 6.1 比较HTML、Servlet和 JSP 171 6.1.1 静态HTML文件 171 6.1.2 用Servlet动态生成 HTML页面 171 6.1.3 用JSP动态生成 HTML页面 173 6.2 JSP语法 177 6.2.1 JSP指令(Directive) 178 6.2.2 JSP声明 180 6.2.3 Java程序片段(Scriptlet) 181 6.2.4 Java表达式 182 6.2.5 隐含对象 184 6.3 JSP的生命周期 185 6.4 请求转发 188 6.5 包含 190 6.5.1 静态包含 190 6.5.2 动态包含 192 6.5.3 混合使用静态包含和 动态包含 194 6.6 JSP异常处理 200 6.7 再谈发布JSP 202 6.8 预编译JSP 203 6.9 PageContext抽象类 204 6.10 JSP技术的发展趋势 206 6.11 小结 207 6.12 思考题 207 第7章 bookstore应用简介 211 介绍bookstore应用的软件结构、各个JSP网页的功能,以及部分Web组件的实现。 7.1 bookstore应用的软件结构 211 7.1.1 Web服务器层 211 7.1.2 数据库层 212 7.2 浏览bookstore应用的JSP 网页 212 7.3 JavaBean和实用类 217 7.3.1 实体类 218 7.3.2 购物车的实现 219 7.4 发布bookstore应用 222 7.5 小结 223 第8章 访问数据库 225 介绍通过JDBC API访问数据库、在Tomcat中配置数据源,以及在Web应用中通过数据源连接数据库的方法。 8.1 安装和配置MySQL数据库 225 8.2 JDBC简介 228 8.2.1 java.sql包中的接口和类 230 8.2.2 编写访问数据库程序的 步骤 234 8.2.3 事务处理 236 8.3 通过JDBC API访问数据库的 JSP范例程序 237 8.4 bookstore应用通过JDBC API 访问数据库 239 8.5 数据源(DataSource)简介 243 8.6 配置数据源 244 8.6.1 在context.xml中加入 <Resource>元素 244 8.6.2 在web.xml中加入 <resource-ref>元素 245 8.7 程序中访问数据源 246 8.7.1 通过数据源连接数据库的 JSP范例程序 246 8.7.2 bookstore应用通过数据源 连接数据库 248 8.8 处理中文编码 251 8.9 分页显示批量数据 252 8.10 小结 256 8.11 思考题 257 第9章 HTTP会话的使用与管理 259 介绍如何通过会话来实现服务器对客户的状态的跟踪。 9.1 会话简介 259 9.2 HttpSession的生命周期及 会话范围 263 9.3 使用会话的JSP范例程序 265 9.4 使用会话的Servlet 范例程序 269 9.5 通过重写URL来 跟踪会话 273 9.6 会话的持久化 277 9.6.1 标准会话管理器 StandardManager 279 9.6.2 持久化会话管理器 PersistentManager 280 9.7 会话的监听 284 9.7.1 用HttpSessionListener统计 在线用户人数 289 9.7.2 用HttpSessionBindingListener 统计在线用户人数 291 9.8 小结 294 9.9 思考题 295 第10章 JSP访问JavaBean 299 介绍JavaBean的概念和创建方法, JSP访问JavaBean的语法,JavaBean在Web应用中的4种存在范围,如何在bookstore应用中运用JavaBean。 10.1 JavaBean简介 299 10.2 JSP访问JavaBean的语法 300 10.3 JavaBean的范围 302 10.3.1 JavaBean在页面(page) 范围内 302 10.3.2 JavaBean在请求(request) 范围内 305 10.3.3 JavaBean在会话(session) 范围内 306 10.3.4 JavaBean在Web应用 (application)范围内 307 10.4 在bookstore应用中访问 JavaBean 308 10.4.1 访问BookDB类 308 10.4.2 访问ShoppingCart类 309 10.5 小结 313 10.6 思考题 314 第11章 开发JavaMail Web应用 317 介绍了一个JavaMail Web应用,通过它,客户可以访问邮件服务器上的邮件账号、收发邮件和管理邮件夹。 11.1 E-mail协议简介 317 11.1.1 SMTP简单邮件 传输协议 317 11.1.2 POP3邮局协议 318 11.1.3 接收邮件的新协议IMAP 318 11.2 JavaMail API简介 319 11.3 建立JavaMail应用程序的 开发环境 321 11.3.1 获得JavaMail API的 类库 321 11.3.2 安装和配置邮件服务器 321 11.4 创建JavaMail应用程序 324 11.5 JavaMail Web应用简介 328 11.6 JavaMail Web应用的 程序结构 328 11.6.1 重新封装Message数据 329 11.6.2 用于保存邮件账号信息的 JavaBean 332 11.6.3 定义所有JSP文件的 相同内容 334 11.6.4 登录IMAP服务器上的 邮件账号 336 11.6.5 管理邮件夹 339 11.6.6 查看邮件夹中的 邮件信息 342 11.6.7 查看邮件内容 345 11.6.8 创建和发送邮件 346 11.6.9 退出邮件系统 348 11.7 在Tomcat中配置邮件会话 (Mail Session) 349 11.7.1 在context.xml中配置 Mail Session资源 349 11.7.2 在web.xml中加入对 JNDI Mail Session资源的 引用 350 11.7.3 在javamail应用中获取 JNDI Mail Session资源 350 11.8 发布和运行javamail应用 352 11.9 小结 352 11.10 思考题 353 第12章 EL表达式语言 355 EL(Expression Language)表达式语言是在JSP 2.0版本中引入的新特性,它用于JSP文件中的数据访问。 12.1 基本语法 355 12.1.1 访问对象的属性及 数组的元素 356 12.1.2 EL运算符 356 12.1.3 隐含对象 357 12.1.4 命名变量 359 12.2 使用EL表达式的 JSP范例 360 12.2.1 关于基本语法的例子 360 12.2.2 读取HTML表单 数据的例子 362 12.2.3 访问命名变量的例子 363 12.3 定义和使用EL函数 363 12.4 小结 366 12.5 思考题 367 第13章 自定义JSP标签 369 结合具体的范例,进一步介绍自定义标签的创建过程,以及它在JSP文件中的使用方法。 13.1 自定义JSP标签简介 369 13.2 JSP Tag API 370 13.2.1 JspTag接口 370 13.2.2 Tag接口 371 13.2.3 IterationTag接口 373 13.2.4 BodyTag接口 374 13.2.5 TagSupport类和 BodyTagSupport类 376 13.3 创建和使用message标签 (访问标签属性) 380 13.3.1 创建message标签的处理类 MessageTag 382 13.3.2 创建标签库描述文件 385 13.3.3 在Web应用中使用标签 388 13.3.4 发布支持中、英文版本的 helloapp应用 390 13.4 创建和使用iterate标签 (重复执行标签主体) 391 13.5 创建和使用greet标签 (访问标签主体内容) 395 13.6 小结 399 13.7 思考题 400 第14章 采用模板设计网上书店应用 403 以bookstore应用为例,介绍如何通过自定义JSP标签来为网站设计模板,从而使所有在客户端展示的网页都通过模板来生成。 14.1 如何设计网站的模板 403 14.2 创建负责流程控制的 Servlet 404 14.3 创建模板标签和 模板JSP文件 406 14.3.1 <parameter>标签和 其处理类 408 14.3.2 <screen>标签和处理类 411 14.3.3 <definition>标签和 处理类 413 14.3.4 <insert>标签和处理类 417 14.4 修改JSP文件 419 14.5 发布采用模板设计的 bookstore应用 420 14.6 小结 423 第15章 JSTL Core标签库 425 本章对JSTL做了概要介绍,并且着重介绍了JSTL中的Core标签库的用法。 15.1 使用第三方提供的 标签库的步骤 425 15.2 JSTL标签库简介 426 15.3 一般用途的标签 427 15.3.1 <c:out>标签 427 15.3.2 <c:set>标签 428 15.3.3 <c:remove>标签 430 15.3.4 <c:catch>标签 430 15.4 条件标签 431 15.4.1 <c:if>标签 431 15.4.2 <c:choose>、<c:when>和 <c:otherwise>标签 432 15.5 迭代标签 433 15.5.1 <c:forEach>标签 433 15.5.2 <c:forTokens>标签 437 15.6 URL相关的标签 437 15.6.1 <c:import>标签 437 15.6.2 <c:url>标签 438 15.6.3 <c:redirect>标签 440 15.7 小结 440 15.8 思考题 441 第16章 JSTL I18N标签库 443 I18N标签库主要用于编写国际化的Web应用,本章对I18N标签库进行了详细介绍。 16.1 国际化的概念 443 16.2 Java对I18N的支持 444 16.2.1 Locale类 444 16.2.2 ResourceBundle类 448 16.2.3 MessageFormat类和 复合消息 449 16.3 国际化标签 452 16.3.1 <fmt:setLocale>标签 452 16.3.2 <fmt:setBundle>标签 453 16.3.3 <fmt:bundle>标签 453 16.3.4 <fmt:message>标签 454 16.3.5 <fmt:param>标签 455 16.3.6 <fmt:requestEncoding> 标签 455 16.4 创建国际化的Web应用 456 16.4.1 创建支持国际化的网页 456 16.4.2 创建资源文件 459 16.5 格式化标签 460 16.5.1 <fmt:setTimeZone>标签 460 16.5.2 <fmt:timeZone>标签 461 16.5.3 <fmt:formatNumber>标签 461 16.5.4 <fmt:parseNumber>标签 462 16.5.5 <fmt:formatDate>标签 463 16.5.6 <fmt:parseDate>标签 465 16.6 小结 465 16.7 思考题 466 第17章 JSTL SQL标签库 469 在JSP中直接通过Java程序代码来访问数据库,会降低JSP页面的可读性和可维护性,为了解决这一问题,可以在JSP中通过JSTL SQL标签库中的标签来访问数据库。 17.1 <sql:setDataSource>标签 469 17.2 <sql:query>标签 470 17.2.1 设置数据源 470 17.2.2 设置select查询语句 470 17.2.3 控制实际取出的记录 471 17.2.4 访问查询结果 471 17.2.5 使用<sql:query> 标签的范例 472 17.3 <sql:param>标签 474 17.4 <sql:dateParam>标签 475 17.5 <sql:update>标签 475 17.6 <sql:transaction>标签 476 17.7 小结 478 17.8 思考题 478 第18章 JSTL Functions标签库 481 介绍Functions标签库中常用的16个函数的用法。 18.1 fn:contains函数 481 18.2 fn:containsIgnoreCase 函数 481 18.3 fn:startsWith函数 482 18.4 fn:endsWith函数 482 18.5 fn:indexOf函数 482 18.6 fn:replace函数 483 18.7 fn:substring函数 483 18.8 fn:substringBefore函数 483 18.9 fn:substringAfter函数 484 18.10 fn:split函数 484 18.11 fn:join函数 485 18.12 fn:toLowerCase函数 485 18.13 fn:toUpperCase函数 485 18.14 fn:trim函数 486 18.15 fn:escapeXml函数 486 18.16 fn:length函数 487 18.17 小结 488 18.18 思考题 489 第19章 简单标签和标签文件 491 为了简化开发标签的过程,JSP 2.0引入了一种新的标签扩展机制,称为“简单标签扩展”。 19.1 实现SimpleTag接口 491 19.1.1 创建和使用<hello> 简单标签 493 19.1.2 创建和使用带属性和 标签主体的<welcome> 简单标签 494 19.1.3 创建和使用带动态属性的 <max>简单标签 495 19.2 使用标签文件 497 19.2.1 标签文件的隐含对象 500 19.2.2 标签文件的指令 501 19.2.3 标签文件的<jsp:invoke>和 <jsp:doBody>动作元素 503 19.2.4 创建和使用带属性和 标签主体的display 标签文件 503 19.2.5 创建和使用带属性和 标签主体的welcome 标签文件 505 19.2.6 创建和使用带变量的 precode标签文件 506 19.3 小结 507 19.4 思考题 507 第20章 过滤器 509 如果在多个Web组件中编写完成同样操作的程序代码,显然会导致重复编码,从而降低开发效率和软件的可维护性,为了解决上述问题,过滤器应运而生。 20.1 过滤器简介 509 20.2 创建过滤器 510 20.3 发布过滤器 513 20.4 串联过滤器 518 20.4.1 包装设计模式简介 519 20.4.2 ServletOutputStream的 包装类 521 20.4.3 HttpServletResponse的 包装类 524 20.4.4 创建对响应结果进行 字符串替换的过滤器 525 20.4.5 ReplaceTextFilter过滤器 工作的UML时序图 527 20.4.6 发布和运行包含 ReplaceTextFilter过滤器的 Web应用 528 20.5 小结 531 20.6 思考题 532 第21章 在Web应用中访问EJB组件 535 首先介绍JavaEE的体系结构;然后以bookstore应用为例,介绍开发EJB组件的过程;最后讲解如何在JBoss服务器上发布JavaEE应用。 21.1 JavaEE体系结构简介 535 21.2 安装和配置JBoss服务器 537 21.3 创建EJB组件 538 21.3.1 编写Remote接口 539 21.3.2 编写Home接口 539 21.3.3 编写Enterprise Java Bean 类 540 21.4 在Web应用中访问EJB 组件 543 21.5 发布JavaEE应用 544 21.5.1 在JBoss上发布 EJB组件 545 21.5.2 在JBoss上发布 Web应用 547 21.5.3 在JBoss上发布 JavaEE应用 549 21.6 小结 550 21.7 思考题 551 第22章 在Web应用中访问Web服务 553 介绍利用AXIS来创建SOAP服务和SOAP客户程序的方法,还介绍了在bookstore应用中访问SOAP服务的方法。 22.1 SOAP简介 553 22.2 建立Apache AXIS环境 555 22.3 在Tomcat上发布 Apache-AXIS Web应用 556 22.4 创建SOAP服务 557 22.4.1 创建提供SOAP服务的 Java类 557 22.4.2 创建SOAP服务的发布 描述符文件 557 22.5 管理SOAP服务 558 22.5.1 发布SOAP服务 558 22.5.2 删除SOAP服务 559 22.6 创建和运行SOAP 客户程序 560 22.7 发布JWS服务 563 22.8 在bookstore应用中访问 SOAP服务 563 22.8.1 创建BookDB服务类及 BookDBDelegate代理类 564 22.8.2 发布bookdbservice服务和 bookstore应用 573 22.9 小结 574 22.10 思考题 575 第23章 Web应用的MVC设计模式 577 首先介绍了MVC设计模式的结构和优点;接着介绍了SUN公司提出的在Java Web开发领域的两种设计模式:JSP Model1和JSP Molde2;然后介绍了Struts实现MVC的机制;最后以helloapp应用为例,简要介绍了在Web应用中使用Struts 2.0的方法。 23.1 MVC设计模式简介 577 23.2 JSP Model 1和 JSP Model 2 579 23.3 Struts概述 581 23.3.1 Struts实现MVC的机制 581 23.3.2 Struts的工作流程 582 23.4 创建采用Struts的Web 应用 583 23.4.1 建立Struts的环境 583 23.4.2 创建视图 584 23.4.3 创建模型 585 23.4.4 创建Action类 585 23.4.5 创建web.xml文件和 struts.xml文件 586 23.5 运行helloapp应用 587 23.5.1 服务器端装载login.htm的 流程 587 23.5.2 用户验证的流程 587 23.6 小结 589 23.7 思考题 589 第2篇 Tomcat配置及第三方实用软件的用法 介绍Tomcat服务器的基本配置和高级配置,从而为Java Web应用创建高效的运行环境;介绍在Java Web应用中运用第三方提供的实用软件(如Velocity和Log4J)的方法。 第24章 Tomcat的控制平台和管理平台 593 Tomcat提供了基于Web方式的管理平台和控制平台,用户通过浏览器,就可以很方便地配置Tomcat服务器,还可以管理运行在Tomcat服务器上的Web应用,如发布、启动、停止或删除Web应用,以及查看Web应用状态。 24.1 访问Tomcat的控制平台和 管理平台 593 24.2 Tomcat的控制平台 595 24.2.1 Tomcat控制平台的功能 595 24.2.2 配置<Valve>元素 597 24.3 Tomcat的管理平台 598 24.4 小结 600 第25章 安全域 601 主要介绍如何通过Tomcat提供的安全域来保护Web应用的资源。 25.1 安全域概述 601 25.2 为Web资源设置 安全约束 602 25.2.1 在web.xml中加入 <security-constraint>元素 603 25.2.2 在web.xml中加入 <login-config>元素 605 25.2.3 在web.xml中加入 <security-role>元素 608 25.3 内存域 608 25.4 JDBC域 610 25.4.1 用户数据库的结构 610 25.4.2 在MySQL中创建和配置 用户数据库 611 25.4.3 配置<Realm>元素 611 25.5 DataSource域 612 25.6 在Web应用中访问 用户信息 614 25.7 小结 614 25.8 思考题 615 第26章 Tomcat与其他HTTP 服务器集成 617 首先讨论Tomcat与HTTP服务器集成的一般原理,然后介绍Tomcat与Apache服务器及IIS集成的详细步骤,最后介绍把由多个Tomcat服务器构成的集群系统与Apache服务器集成的方法。 26.1 Tomcat与HTTP服务器 集成的原理 617 26.1.1 JK插件 618 26.1.2 AJP协议 618 26.2 在Windows下Tomcat与 Apache服务器集成 618 26.3 在Linux下Tomcat与Apache 服务器集成 621 26.4 Tomcat与IIS服务器集成 623 26.4.1 准备相关文件 624 26.4.2 编辑注册表 624 26.4.3 在IIS中加入“jakarta” 虚拟目录 626 26.4.4 把JK插件作为ISAPI 筛选器加入到IIS中 627 26.4.5 测试配置 628 26.5 Tomcat集群 628 26.5.1 配置集群系统的 负载平衡器 629 26.5.2 配置集群管理器 631 26.6 小结 635 26.7 思考题 636 第27章 在Tomcat中配置SSI 637 首先介绍了SSI的概念及SSI指令的用法,然后介绍了在Tomcat中配置SSI的方法。 27.1 SSI简介 637 27.1.1 #echo指令 638 27.1.2 #include指令 640 27.1.3 #flastmod指令 641 27.1.4 #fsize指令 641 27.1.5 #exec指令 641 27.1.6 #config指令 641 27.1.7 #if、#elif、#else和 #endif指令 643 27.2 在Tomcat中配置对SSI的 支持 643 27.3 小结 645 27.4 思考题 645 第28章 Tomcat阀 647 介绍Tomcat阀的种类,还将详细介绍各种Tomcat阀的功能和使用方法。 28.1 Tomcat阀简介 647 28.2 客户访问日志阀 648 28.3 远程地址过滤器 650 28.4 远程主机过滤器 651 28.5 客户请求记录器 652 28.6 小结 653 28.7 思考题 653 第29章 在Tomcat中配置SSL 655 SSL(Server Socket Layer)协议,旨在达到在开放网络(Internet)上安全、保密地传输信息的目的,这种协议在Web上获得了广泛的应用。 29.1 SSL简介 655 29.1.1 加密通信 656 29.1.2 安全证书 656 29.1.3 SSL握手 657 29.2 在Tomcat中使用SSL 658 29.2.1 准备安全证书 658 29.2.2 配置SSL连接器 659 29.2.3 访问支持SSL的 Web站点 660 29.3 小结 661 29.4 思考题 662 第30章 用ANT工具管理Web应用 663 介绍了ANT的安装和配置,并以bookstore应用为例,介绍了ANT的使用方法。 30.1 安装配置ANT 663 30.2 创建build.xml文件 663 30.3 运行ANT 668 30.4 小结 669 30.5 思考题 669 第31章 使用Log4J进行日志操作 671 首先介绍Log4J的组成,接着介绍如何在程序中使用Log4J,最后介绍如何在Web应用中通过Log4J生成日志。 31.1 Log4J简介 671 31.1.1 Logger组件 672 31.1.2 Appender组件 673 31.1.3 Layout组件 673 31.1.4 Logger组件的继承性 674 31.2 Log4J的基本使用方法 675 31.2.1 定义配置文件 675 31.2.2 在程序中使用Log4J 677 31.3 在helloapp应用中 使用Log4J 680 31.3.1 创建用于配置Log4J环境的 Servlet 680 31.3.2 在login.jsp中输出日志 681 31.3.3 发布和运行使用Log4J的 helloapp应用 681 31.4 小结 683 31.5 思考题 683 第32章 Velocity模板语言 685 首先通过一个简单的Velocity例子来讲解创建基于Velocity的Web应用的步骤,然后详细介绍Velocity模板语言的各个要素。 32.1 安装Velocity 685 32.2 Velocity的简单例子 685 32.2.1 创建Velocity模板 685 32.2.2 创建扩展VelocityServlet的 Servlet类 686 32.2.3 发布和运行基于Velocity的 Web应用 688 32.3 注释 689 32.4 引用 689 32.4.1 变量引用 689 32.4.2 属性引用 690 32.4.3 方法引用 692 32.4.4 正式引用符 693 32.4.5 安静引用符 693 32.4.6 转义符 694 32.4.7 大小写替换 694 32.5 指令 695 32.5.1 #set指令 695 32.5.2 字面字符串 696 32.5.3 #if指令 697 32.5.4 比较运算 697 32.5.5 #foreach循环指令 698 32.5.6 #include指令 700 32.5.7 #parse指令 700 32.5.8 #macro指令 701 32.5.9 转义VTL指令 702 32.5.10 VTL的格式 702 32.6 其他特征 703 32.6.1 数学运算 703 32.6.2 范围操作符 703 32.6.3 字符串的连接 704 32.7 小结 705 32.8 思考题 705 第33章 创建嵌入式Tomcat服务器 707 介绍如何把Tomcat嵌入到Java应用程序中,以及在程序中配置Tomcat的组件,并控制Tomcat服务器的启动和关闭。 33.1 将Tomcat嵌入到Java 应用中 707 33.2 创建嵌入了Tomcat的 Java示范程序 708 33.3 运行嵌入式Tomcat 服务器 711 33.4 小结 713 附录A server.xml文件 715 对server.xml文件的一些常用的元素进行了介绍。 A.1 配置Server元素 716 A.2 配置Service元素 717 A.3 配置Engine元素 717 A.4 配置Host元素 718 A.5 配置Context元素 718 A.6 配置Connector元素 719 附录B web.xml文件 721 介绍了Web应用的配置文件web.xml文件。 B.1 配置过滤器 723 B.2 配置Servlet 724 B.3 配置Servlet映射 725 B.4 配置Session 725 B.5 配置Welcome文件清单 725 B.6 配置Tag Library 726 B.7 配置资源引用 726 B.8 配置安全约束 727 B.9 配置安全验证登录界面 727 B.10 配置对安全验证 角色的引用 728 附录C XML简介 729 XML,即可扩展标记语言(Extensible Markup Language),是一种可以用来创建自定义标记的标记语言。 C.1 SGML、HTML 与XML的 比较 729 C.2 DTD文档类型定义 730 C.3 有效XML文档以及 简化格式的XML文档 731 C.4 XML中的常用术语 732 C.4.1 URL、URN和URI 733 C.4.2 XML命名空间 733 附录D 书中涉及软件获取途径 735 为了便于读者在本地机器上搭建运行范例的环境,列出了书中涉及的软件的获取途径。 序言/前言 前言/序: 美丽的奉献 执著的追求 —记畅销书品牌成功背后的故事 2004年3月,国内第一本介绍Tomcat与Java Web主题的图书——《Tomcat与Java Web开发技术详解》在孙卫琴老师的笔下孕育而生,由电子工业出版社出版。此书一经出版长期居于同类书排行榜首位,至今重印12次,创造同类图书的销售奇迹,更有业内专家认为 “这是由国人创作的最优秀的Java技术书籍之一”。 任何事情的成功皆有因。这本书为何会得到读者的认可?这本书的写作和出版过程中,有着怎样的故事呢?借此书第2版推出之际,我愿与各位读者分享 “师者,所以传道受业解惑也。” —韩愈《师说》 孙卫琴—— 一位在IT领域里已经辛勤耕耘了十多年的技术专家,她以著书立说的方式,将师者传道、授业、解惑的本质体现得淋漓尽致。正是因为有这样一位善于总结、甘于奉献的老师,通过她执著的追求和不懈的努力,将自己对技术的理解,用最适合读者学习的语言和讲法,如数纳入书中,受到了读者的欢迎和好评。 传道的途径—专注于图书创作 孙老师在接受51CTO网站访问时,提到她成为一个专业技术作家的过程:“现在大家看到的成功主要就是在写作领域,我所创作的计算机图书比较畅销,深受读者欢迎,这是大家看到的一种结果,但是对我个人来说这样的结果并不是我刻意去追求的,甚至都不是之前能预想到的。开始我也是一个非常普通的软件开发程序员,大学毕业后就去从事软件开发工作。大概我性格中包含了少许要强的本性,而且拥有旺盛的好奇心,愿意做很多新鲜的尝试和探索,这些因素促使我日后与写作结下了深缘。在做开发的时候我就希望做一些能最大体现自身社会价值的事情,在这样想法的促使下,我觉得写书也是一种尝试。当我对Java技术钻研得比较精通、技术积淀比较扎实的时候,我就自然而然地萌生了写作这种想法,于是开始进行创作。一开始的第一本书并不是很有影响,接下来我写了《Tomcat与Java Web开发技术详解》这本书。当时我不是一个很知名的作者,向国内大的出版社投稿也不容易。在一个偶然的情况下,当时飞思的总经理郭晶看中了这本书,给了我一个很好的机会,我到现在都觉得很荣幸。作为一个开发人员,能在电子工业出版社出版一本计算机图书,我觉得很骄傲,于是加倍努力地去完成。我是一个非常专注的人,一旦静下心来还是比较能坐得住的。如今,我已经创作了6本书,而且它们都很受读者欢迎,对此我很欣慰。写作本身是一个非常漫长和孤独的过程,读者对我的作品的肯定是让我能继续潜心写作的最大的动力。每问世一本书,我就可以以书会友,与数万素不相识的读者们畅谈Java技术,这是平凡的写作生涯给我带来的最大欣慰。” 正是这样一种平和与专注的心态,让她能够潜心研究技术,并通过图书创作的方式,实现技术传道的目标。 授业的方式—专心研究图书写作体例 在2007年飞思召开的一次Java技术研讨会上,孙卫琴老师更是将她以图书为载体传道、授业、解惑的心得与在座的许多技术专家进行了分享。她提到:“书不是用来炫耀作者掌握的技术,而是用来向读者传授技术的。”正是基于这样的思想,她潜心研究什么样的表达方式是最容易让读者理解和掌握的。对于一个概念的解释,是用图表对比式,还是问题启发式,抑或范例说明式,她不断去实践,直到得到满意的结果。 对于读者来讲,通篇只有文字没有图表的内容,确实让人望而生畏。书要读起来有趣、易懂,才会让人有兴趣深入去学习,所以要善于总结、分析归纳知识点,并以恰当的方式来体现,看似简单的道理,实现起来并不容易,在《Tomcat与Java Web开发技术详解(第2版)》中,共有33个知识点、430张图表、14个典型的Web应用范例,其中倾注了孙卫琴老师8个多月来废寝忘食的创作心血。 解惑的途径—图书出版+网络服务 孙卫琴老师用她专业、专注和专心的态度看待自己的图书创作,同时还专门开发网站为购书的读者提供技术咨询服务和论坛讨论平台,甚至有的书还专门开发了配套下载的视频讲座资料,给读者提供图书以外的增值服务。 我想,这些书能创造非常好的销售业绩,与孙老师坚持为师者传道授业解惑的心态不无关系,成功并不是偶然,而是必然。 而作为策划出版方,我们与孙老师紧密沟通,策划第2版图书的时间并不短,从策划到最后产品正式出版,也有一年半的时间。第2版的图书与第1版相比增加了许多最新的技术,同时在版式设计、编辑加工等方面,也注意从读者的易读性角度出发,在与孙老师共同对书稿进行多次反复的校正之后,《Tomcat与Java Web开发技术详解(第2版)》终于正式出炉。这中间包含了许多人的奉献与追求,这种奉献是美丽的,这种追求是执著的。 衷心希望孙卫琴老师的这本书,能够引领更多读者轻松进入Tomcat与Java Web的开发殿堂。 写在《Tomcat与JavaWeb开发技术详解(第2版)》出版前夕 郭晶 联系方式 咨询电话:(010)68134545 88254160 电子邮件:support@fecit.com.cn 服务网址:http://www.fecit.com.cn http://www.fecit.net 通用网址:计算机图书、飞思、飞思教育、飞思科技、FECIT Tomcat是在SUN公司的JSWDK(JavaServer Web Development Kit,SUN公司推出的小型Servlet/JSP调试工具)的基础上发展起来的一个优秀的Java Web应用容器,它是Apache开源软件组织的一个子项目。Tomcat被JavaWorld杂志评选为2001年度最具创新的Java产品(Most Innovative Java Product),同时,它还是SUN公司官方推荐的Servlet/JSP容器(参见http://java.sun.com/products/jsp/tomcat/),因此受到越来越多的软件公司和开发人员的喜爱。Servlet和JSP的最新规范都在Tomcat的新版本中得到了实现。 Java Web应用容器的主要功能就是运行Servlet和JSP,而JSP本质上就是Servlet。因此本文中提到的Java Web应用容器、Servlet/JSP容器或者Servlet容器,实际上都是同一个概念的不同说法。 作为一个开放源代码的软件,Tomcat得到了开放源代码志愿者的广泛支持,它可以和目前大部分的主流HTTP服务器(如IIS和Apache服务器)一起工作,而且运行稳定、可靠、效率高。 作者根据多年的Java Web开发经验,在本书中详细阐明了在最新的Tomcat 6版本上开发Java Web应用涉及的各种技术,并且介绍了如何将Tomcat和其他主流HTTP服务器集成,以及创建具有实用价值的企业级Java Web应用的方案。 本书的组织结构和主要内容 本书的内容总体上分为两部分。 第1篇为Java Web开发技术详解,包含第1章至第23章:依据SUN的Java Servlet规范和JSP规范,深入介绍了开发Java Web应用的各种技术。 第2篇为Tomcat配置及第三方实用软件的用法,包括第24章至第33章:介绍Tomcat服务器的基本配置和高级配置,从而为Java Web应用创建高效的运行环境;介绍在Java Web应用中运用第三方提供的实用软件(如Velocity和Log4J)的方法。 本书按照由浅到深、前后呼应的顺序来安排内容,本书涉及的内容可以细分为以下5类。 (1)Tomcat的基础知识,参见表P-1。 表P-1 Tomcat的基础知识 知 识 点 参 考 章 Tomcat服务器的作用、结构和安装步骤 第2章:Tomcat简介 配置虚拟主机 第3章:第一个JavaWeb应用 (2)Java Web开发的基础知识,参见表P-2。 表P-2 Java Web开发的基础知识 知 识 点 参 考 章 HTTP协议和Web运作原理 第1章:Web运作原理探析 Java Web应用的结构和发布 第3章:第一个JavaWeb应用 Servlet的基本原理,创建Servlet的基本步骤,Servlet API中的常用接口和类的用法 第4章:Servlet技术(上) JSP基本语法 第6章:JSP技术 bookstore应用范例 第7章:bookstore应用简介 在Java Web应用中访问数据库,配置数据源 第8章:访问数据库 在Java Web应用中使用HTTP会话 第9章:HTTP会话的使用与管理 在Java Web应用中访问JavaBean,JavaBean在不同范围内的生命周期 第10章:JSP访问JavaBean EL语言 第12章:EL表达式语言 (3)Java Web开发的高级技术,参见表P-3。 表P-3 Java Web开发的高级技术 知 识 点 参 考 章 用Servlet实现文件上传、文件下载和生成动态图片 第5章:Servlet技术(下) ServletContext监听器 HTTP会话监听器 第5章:Servlet技术(下) 第9章:HTTP会话的使用与管理 开发JavaMail Web应用,配置Mail Session 第11章:开发JavaMail Web应用 创建自定义JSP标签 第13章:自定义JSP标签 网站的模板设计 第14章:采用模板设计网上书店应用 JSTL标签库的用法 第15章:JSTL Core标签库 第16章:JSTL I18N标签库 第17章:JSTL Sql标签库 第18章:JSTL Functions标签库 创建国际化的Web应用 第16章:JSTL I18N标签库 简单标签和标签文件的用法 第19章:简单标签和标签文件 过滤器 第20章:过滤器 在Web应用中访问EJB组件 第21章:在Web应用中访问EJB组件 通过AXIS发布和访问Web服务 第22章:在Web应用中访问Web服务 Java Web应用的MVC设计模式 第23章:Web应用的MVC设计模式 (4)在Web应用中运用第三方提供的实用软件,参见表P-4。 表P-4 在Java Web应用中运用第三方提供的实用软件 知 识 点 参 考 章 通过AXIS发布和访问Web服务 第22章:在Web应用中访问Web服务 使用基于MVC的Struts框架 第23章:Web应用的MVC设计模式 使用ANT工具来管理Web应用 第30章:使用ANT工具管理Web应用 使用Log4J进行日志操作 第31章:使用Log4J进行日志操作 使用Velocity模板语言 第32章:Velocity模板语言 (5)Tomcat的高级功能,参见表P-5。 表P-5 Tomcat的高级功能 知 识 点 参 考 章 持久性会话管理 第9章:HTTP会话的使用与管理 Tomcat的控制和管理平台 第24章:Tomcat的控制平台和管理平台 安全域 第25章:安全域 Tomcat与其他HTTP服务器(如Apache Web服务器和IIS Web服务器)集成 第26章:Tomcat与其他HTTP服务器集成 Tomcat集群 第26章:Tomcat与其他HTTP服务器集成 在Tomcat中配置SSI 第27章:在Tomcat中配置SSI Tomcat阀 第28章:Tomcat阀. 在Tomcat中配置SSL 第29章:在Tomcat中配置SSL 创建嵌入式Tomcat 第33章:创建嵌入式Tomcat服务器 本书的范例程序 3个典型的Web应用范例贯穿全书: helloapp应用。 bookstore(网上书店)应用。 JavaMail Web(javamail)应用。 1.helloapp应用 通过helloapp应用的例子来讲解Java Web开发的基础知识。比如,在第3章以helloapp应用为例,讲述了发布Web应用的步骤。在其他章节中,所有针对单个知识点的Servlet和JSP例子,都被发布到helloapp应用中。 2.bookstore应用 bookstore应用是一个充分运用了所有Java Web开发技术的综合例子,它实现了一个网上书店的应用,更加贴近于实际应用。为了便于读者循序渐进地掌握Java Web技术,在本书中提供了bookstore应用的5个版本,它们分别侧重于不同的技术。 (1)bookstore version0:通过这个例子读者可以进一步掌握JSP编程的技巧,能够灵活运用JavaBean和HttpSession,并掌握通过JDBC API访问数据库的技术。 (2)bookstore version1:介绍如何在Tomcat中配置JNDI DataSource,以及如何在Web应用中访问JNDI DataSource。 (3)bookstore version2:使读者掌握创建JSP自定义标签的高级技术,并掌握对网页进行模板设计的方法。 (4)bookstore version3:实现了基于JavaEE架构的bookstore应用,并介绍了在JBoss应用服务器上发布bookstore应用的方法。 (5)bookstore version4:实现了基于Web服务架构的bookstore应用。 3.JavaMail Web应用 JavaMail Web应用是一个基于Web的邮件客户程序,它向Web客户提供了访问邮件服务器上的邮件账号、进行收发邮件和管理邮件夹等功能。通过这个例子,读者可以了解电子邮件的发送和接收协议,掌握JavaMail API的使用方法,以及熟悉通过JavaMail API创建JavaMail Web应用的过程。通过这个例子,读者还可以掌握在Tomcat中配置Mail Session的步骤,以及在Web应用中访问Mail Session的方法。 这本书是否适合你 阅读本书,要求读者具备Java编程的基础知识,作者的另一本书《Java面向对象编程》对此进行了详细介绍。 本书面向所有打算或已经开发Java Web应用的读者。尽管本书在讲解Java Web技术时以Tomcat为运行平台,但由于Java Web技术是SUN公司在Java Servlet规范中提出的通用技术,因此本书讲解的范例可以运行在任何一个实现了SUN的Servlet规范的Java Web服务器上。另一方面,由于Tomcat是SUN公司官方推荐的Servlet/JSP容器,因此在学习Java Web开发技术或进行实际的开发工作时,Tomcat是首选的Java Web应用容器。 如果你是开发Java Web应用的新手,建议按照本书安排的章节顺序来学习。如果你已经在开发Java Web应用方面有丰富的经验,则可以把本书作为实用的Tomcat技术和Java Web开发技术的参考资料。本书不仅详细介绍了Servlet API、JDBC API和JavaMail API等的用法,还详细介绍了JSTL标签库中的各个标签的用法,此外还介绍了把Tomcat与当前其他通用的HTTP服务器集成的步骤,以及Tomcat 的各种高级功能。灵活运用本书介绍的各种开发和配置技巧,将使Java Web应用开发更加得心应手。 实践是掌握Java Web技术最迅速、有效的办法。本书提供了大量典型的例子,并且在本书附赠光盘上提供了完整的源代码,以及软件安装程序。本书所有程序在Tomcat 6版本中都测试通过,读者可以按照书上介绍的详细步骤亲自动手,在本地机器上配置Tomcat的开发和运行环境,然后创建和发布Java Web应用。 光盘使用说明 本书附赠光盘包含以下目录。 1.software目录 在该目录下包含了本书涉及的大多数软件的安装程序,主要包括: (1)Tomcat的安装软件。 (2)MySQL服务器的安装软件。 (3)Apache服务器的安装软件。 (4)Ant的安装软件。 (5)Apache AXIS软件。 (6)Log4J软件。 (7)Struts软件。 (8)JBoss软件。 (9)Velocity软件。 除了上述软件,本书还需要用到JDK和MerakMailServer软件,由于受到这些软件版权的限制,在光盘中未提供这两个软件。读者可以到这些软件的官方网站或者JavaThinker网站上下载它们,本书的相关章节详细介绍了获取这些软件的途径。 2.lib目录 在该目录下提供了运行本书Java Web应用所需的JAR文件,以及配置Tomcat服务器与其他HTTP服务器集成所需的JK插件: (1)activation.jar(JavaBeans Activation Framework API)。 (2)mail.jar(Java Mail API)。 (3)log4j-1.2.8.jar(Log4J API)。 (4)xerces.jar(Xerces API)。 (5)struts2-core-2.1.2.jar(Struts API)。 (6)j2ee.jar(J2EE API)。 (7)isapi_redirect.dll(Tomcat与IIS集成的JK插件)。 (8)mod_jk.so(Windows XP下Tomcat与Apache集成的JK插件)。 (9)mod_jk_linux.so(Linux下Tomcat与Apache集成的JK插件)。 (10)jsp-api.jar(JSP API)。 (11)servlet-api.jar(Servlet API)。 (12)mysqldriver.jar(MySQL的JDBC驱动程序)。 3.sourcecode目录 在该目录下提供了本书所有的源程序,每一章的源程序都位于相应的sourcecode/chapterX目录下(X代表章节号)。bookstore应用和JavaMail Web应用分别位于sourcecode/bookstores和sourcecode/javamails目录下。 第2版增加内容 第2版保留了第1版的精华内容,并且在内容的深度和广度方面都进行了很大的扩展。第2版主要增加了如下内容: 增加了第1章(Web运作原理探析)。本章以HTTP协议为核心,介绍了Web的概念、基本运作原理及其发展历程,并且用Java套接字创建了一个简单的HTTP客户程序和服务器程序,这个范例能帮助读者直观地理解浏览器与Web服务器的通信细节。 更深入地介绍了Servlet技术。详细介绍了Servlet API中的主要接口和类(如Servlet、ServletRequest、ServletResponse、ServletContext和HttpSession)的用法和生命周期,并且介绍了用Servlet实现文件上传、文件下载和动态生成图片等实用功能。 深刻揭示Java Web应用的4种范围(页面范围、请求范围、会话范围和Web应用范围)的概念和本质。Web组件通过存取4种范围内的数据来实现Web组件之间的数据传输和共享。Servlet、JSP和自定义JSP标签都会访问这4种范围内的共享数据。 增加了各种监听器的用法,包括监听Web应用生命周期的ServletContextListener,以及监听HTTP会话的HttpSessionListener、HttpSessionAttributeListener、HttpSessionBindingListener和HttpSessionActivationListener。 增加了创建复杂的自定义JSP标签的范例,这些自定义JSP标签能够重复执行标签主体,或者读取标签主体的内容。 详细介绍了JSTL标签库的用法。 介绍了创建国际化的Web应用的方法。 详细介绍了EL语言、简单标签和标签文件的用法。 实现了基于Web服务架构的bookstore购物网站应用。 介绍了Tomcat集群的配置方法,以及在Tomcat中配置SSI的方法。 为本书多数章精心设计了思考题,并提供了答案,帮助读者理解和巩固书中阐述的知识。 此外,第2版根据最新的Servlet 2.5和JSP 2.1版本,以及最新的Tomcat 6版本,对第1版中的所有范例和配置代码做了升级。 致谢 本书在编写过程中得到了Apache软件组织和SUN公司在技术上的大力支持,并且由飞思科技产品研发中心负责监制工作,此外本书第1版的读者及JavaThinker网站的网友为本书的编写提供了有益的帮助,在此表示衷心感谢!尽管我们尽了最大努力,但本书难免会有不妥之处,欢迎各界专家和读者朋友批评指正,以下网址是作者为本书提供的技术支持网址,读者可通过它下载与本书相关的资源(如源代码、软件安装程序和讲义等),还可以与其他读者交流学习心得,以及对本书提出宝贵意见: http://www.javathinker.org/javaweb_support.jsp 孙卫琴 详情参见:http://www.china-pub.com/129893
|