图书前言

前    言

假设贵公司打算在网上销售产品。对您而言,数据库已经准备就绪,其中保存有各件商品的价格和库存状态。但是,数据库不会说Web浏览器所用的HTTP语言,也不会输出Web浏览器所需要的HTML格式的页面。怎么办?您如何收集“用户希望购买什么商品”这类信息?您希望针对访问者的偏好和兴趣为其定制页面,但具体如何实现?您希望在用户在贵公司网站购物时跟踪他们所选择的商品,但实现此行为需要哪些技术呢?随着网站的知名度日渐提升,您可能希望能压缩网页以减少带宽。对于所用浏览器不支持压缩格式的用户,如何在保证他们正常访问网页的情况下实现这一期望?针对所有这些情况,我们需要一个程序来充当浏览器和服务器端资源的“中介”。本书所讲的正式如何利用Java平台来实现这类程序。

“稍等,”您会说,“你不是已过一本这方面的书吗?”嗯,没错!在2000年的5月,Sun Microsystem Press和Prentice Hall出版发行了Marty Hall的第二本书《Servlet和JSP核心编程》。其畅销程度超乎所有人的预期,销量接近10万册(英文版),被翻译为保加利亚语、简体中文、繁体中文、捷克语、法文、德文、希伯来语、日语、朝鲜语、波兰语、俄语和西班牙语,并被Amazon.com网站评为2001年最畅销的5本计算机编程图书之一。太开心啦!

自这本书出版以来,servlet和JSP的使用以一种非常显著的速度在增长着,Java 2 平台已经成为开发电子商务应用、动态网站和Web应用与服务的技术首选。servlet和JSP仍然是这一平台的基础,连接着Web客户端和服务器端应用。事实上,几乎所有主要的基于Windows,Unix(包括Linux),Mac OS,VMS和其他大型机操作系统的Web服务器都支持servlet和JSP技术,要么内置,要么通过插件。经过适当的配置,您就可以在Microsoft IIS,Apache Web Server,IBM WebSphere,BEA WebLogic,Oracle Application Server 10g等其他数十个服务器上运行servlet和JSP。商业和开源的servlet与JSP引擎在性能上都已经得以显著提升。

我们深信,servlet和JSP领域继续以很快的速度发展。因此,我们再也无法在单独的一本书中全面覆盖这项技术。本书第1卷全面概述了几乎所有实际项目中都可以用到的servlet和JSP相关特性。本书第2卷侧重于使用不太频繁但对安全Web应用至关重要的一些特性。具体如下。

? 部署描述文件  通过合理使用部署文件web.xml,可以控制Web应用的诸多方面,如servlet的预装载、限制资源访问以及控制session的失效时间。

? Web应用的安全性  对于如今的任何Web应用,安全至关重要!我们可以通过servlet和JSP安全模型轻松创建登录页面和控制对Web资源的访问。

? 定制标签库  定制标签显著改进了JSP页面的设计。通过定制标签,我们可以针对自己的商业应用,轻松开发自己的可重用的标签。除了介绍如何创建自定义标签库,本书还介绍了标准的Java标签库(JSTL)。

? 事件处理  通过事件处理框架,我们可以控制Web应用的初始化和关闭,识别HTTP 会话的销毁,设置应用范围的值。

? servlet和JSP过滤器  有了过滤器,我们可以应用一些预处理和后处理动作。例如,注册进入请求,阻止访问和修改servlet和JSP响应。

? Apache Struts  这个框架大大增强了可用于servlet和JSP的模型-视图-控制器(MVC)架构。更重要的是,Apache Struts仍然是行业内应用最广的框架。

读者对象

本书的主要受众是熟悉servlet和JSP基础、希望提升的开发人员。本书讨论了许多主题,如部署描述文件、安全、监听程序、自定义标签、JSTL、Struts以及Ant,有的读者可能希望先选择自己最感兴趣的技术,然后再阅读其他的主题。大多数商用servlet和JSP Web应用几乎都采用了本书所介绍的这些技术,所以建议读完整本书。

对于servlet与JSP新手,建议阅读本书第1卷。本书不仅介绍了如何安装和配置servlet容器,还很好地阐述了servlet与JSP规范。它是本书第2卷的基础。

本书第1卷和第2卷都假设读者已经具有一些基本的Java编程知识。本书不要求读者一定要是专业的Java开发人员,但如果对Java编程一无所知,建议选择其他书入门。毕竟,servlet与JSP技术应用的是Java语言。如果不了解Java语言,就无法使用servelt与JSP。因此,对于不了解Java编程基础,建议阅读一些优秀的入门书,比如《Java编程思想》,《Core Java》或《Core Web Programming》,这些书都是Prentice Hall出版发行的。

本书配套网站

本书有一个配套网站,网址为http://volume2.coreservlet.com。这个免费的配套网站包括如下内容。

? 书中所有实例的源代码,供读者下载,并随意使用。

? 书中所提到的所有URL资源链接地址。

? servlet和JSP软件的最新下载站点。

 

致    谢

本书写作过程中,得到了很多人的帮助。没有他们的帮助,我们或许还在第2章停滞不前。Chuck Cavaness (Cypress Care公司),Bob Evans (JHU应用物理实验室), Randal Hanford (波音),Kalman Hazins (JHU应用物理实验室),Michael Kolodny (Raba科技), Kyong Park (Raba科技),Eric Purcell (Lockheed-Martin),Ylber Ramadani (George Brown学院)和Richard Slywczak (NASA Glenn研究中心)针对许多章,分别提出了很多有价值的反馈意见。他们的建议使得本书得以显著完善。 

Teresa Horton为我们指正了错误的标点符号、错误的语句、录入错误和语法上的问题。她对本书进行了大量的润饰。Vanessa Moore设计了本书的版式并制作了最终版本,不管我们有多少次最终改动,她都无怨无悔地给予支持和配合。Prentice Hall的Greg Doench对本书第1版富有信心,并鼓励我们创作第2版。在此一并致谢。

最重要的是,Marty要感谢B. J. Lindsay和Nathan的耐心和鼓励。Larry要感谢Lee的关爱和鼎力支持。Yaakov希望感谢上帝的光辉、上帝的恩典和怜悯他的每一天:他的双亲(Ilia先生和Galina Khaikin女士)在80年代的时候带着13岁的他,参加了他一生中第一堂编程课;他的孩子们,Moshe 和Esther Miriam,为他的生活带来挑战和乐趣;当然还有他的妻子Perel,感谢她一直以来的支持和鼓励。上帝以和谐的家庭赐福于我们。

Marty Hall是coreservlets.com公司的总裁。coreservlets.com是一家提供Java培训和技术咨询服务的公司。同时,Marty还在Johns Hopkins大学计算机科学系为在职研究生讲授Java和Web程序设计课程,并在此担任分布式计算和Web技术领域的主管。Marty有5部著作:《servlet与JSP核心编程》(第1版和第2版)、More Servlets and JavaServer Pages和Core Web Programming(第1版和第2版)。可通过hall@coreservlets.com与他联系。

Larry Brown是美国海军研发实验室网络和系统经理。他也是Core Web Programming(第2版)的作者。可通过larry@lmbrown.com和他联系。

Yaakov Chaikin是哥伦比亚一家软件开发公司的高级顾问。除了他的本职工作以外,他还在马里兰的Loyola学院为计算机科学专业研究生讲授Web开发技术,他在此担任Web开发主管。他经常帮助妻子打理她的Web/图形设计业务tbiq.com。可通过yaakov.chaikin@gmail.com和他联系。