Servlet和JSP学习指南
①一般下午5点前订单,当日发货,开发票联系客服②教材,学习,考试类书默认有笔记(或做过)③其他类书一般无笔记,提前与客服沟通好再下单,否则本店不承担责任)④部分图书籍采用标准图片,可能存在不同印次不同封面,内容一致⑤出版时间过长的书都可能有自然发黄现象。
¥
12.35
2.1折
¥
59
八品
库存2件
作者 Budi Kurniawan
出版社 机械工业出版社华章公司
ISBN 9787111418610
出版时间 2013-04
装帧 平装
开本 16开
定价 59元
货号 1806620721561587712
上书时间 2024-11-15
商品详情
品相描述:八品
商品描述
前言 译者序 Sun公司于1996年发布了Java Servlet技术,与CGI(Common Gateway Interface,公共网关接口)形成竞争,之后,它成为在Web中生成动态内容的标准。自从Servlet面世以来,也开发出了许多基于Java的Web框架,以帮助程序员更迅速地编写Web应用程序。目前全世界拥有了众多的Java Web开发人员,也是最热门的编程技术。作者Budi Kurniawan是BrainySoftware.com的高级架构师,也是《How Tomcat Works》、《Java for the Web with Servlets, JSP and EJB》以及《Struts 2 Design and Programming》、《Java 7: A Beginner抯 Tutorial》的作者。他已经发表了上百篇技术文章,并编写过授权给全球著名的大公司使用的软件。 本书读者对象 本书是针对有Java编程语言基础的Web开发者的,Java Web应用程序开发是一种很成熟并且很热门的编程技术。同时,它也汇集各种技术于一身,经常令初学者不知道从何入手。如果你也有同感,那么本书就很适合你,因为它就是一本特意为初学者量身定制的教程。作为一套面对初学者的教程,本书不是要教会你每一种Servlet/JSP技术。如果你是一名有经验的Web应用开发者,对Servlet 3.0的新特性感兴趣,那么本书涵盖新特性的章节正是你所需要阅读并实践的内容。 章节简介 本书介绍了最重要的编程概念,并教你如何编写Servlet/JSP,以及如何使用Servlet核心类库。对于编写真实的Web应用程序提供了很好的指导。本书是你所能找到的最全面的Java Web应用程序开发之入门教程,其主题有: Java Web编程的核心技术Servlet 4种Session管理技术 JSP 表达式语言 JSTL以及定制标签 定制标签文件 Servlet事件驱动编程之监听器 拦截请求的Web对象过滤器 Model 2架构 利用Servlet 3.0新特性进行文件上传以改善用户的体验 通过编程方式将资源发送到浏览器 利用Decorator模式等来改变Servlet请求和响应的行为 Servlet 3.0新特性之异步处理 通过声明和编程方式来保护Java的Web应用程序 应用程序的部署及描述符说明 Servlet 3.0新特性之动态注册和Servlet容器初始化 技术范围 本书旨在使你更全面、更专业地掌握Java Web应用程序开发技术,但是它只是一本比较基础的书籍,如果你已经有多年的Java Web应用程序开发经验,或许可以通过快速的阅读或者直接找到自己所需要的新技术点。当阅读本书时,你会遇到许多需要动手进行验证的实例,可以利用本书附带的示例程序进行练习与实践。示例与答案下载地址为:http://books.brainysoftware.com/download/servletjsp.zip。 正如在翻译过程中发现原著的错误一样,虽然我们在翻译过程中竭力以求信、达、雅,但限于自身水平,必定仍会有诸多不足,还望各位读者不吝指正。大家可以通过访问我的博客http://YuLimin.ItEye.com或者发送电子邮件到YuLimin@163.com进行互动。 关于术语的翻译,仍然沿用翻译《Effective Java中文(第2版)》时采用的术语表以及满江红开放技术研究组织翻译术语,请见http://yulimin.iteye.com/blog/272088。 感谢崔毅(http://cuiyi.javaeye.com/)对我在翻译中碰到的问题进行的深入讨论,并对本书翻译时所采用的术语进行了认真的磋商;感谢"满江红开放技术研究组织"的翻译同仁们在术语表讨论中提出许多中肯的建议;感谢满江红开源组织的曹晓钢提供的一些翻译注意事项和热情的帮助;感谢机械工业出版社的编辑认真仔细地审稿,辛苦了,谢谢! 本书由我组织翻译,崔毅负责翻译第1~8章,俞哲皆负责翻译第9~14章,我负责翻译前言、第15~18章、附录并对全书所有章节进行全面审校,还负责对原文中的错误与作者进行沟通并加以修正。参与翻译与审校的还有:杨春花、崔毅、张琬滢、蒋凌锋、魏伟、万国辉等,在此再次深表感谢。 本书章节安排合理,内容承上启下,但是需要边看书边动手做实验,才能充分理解并掌握Java Web应用程序开发技术及新特性。快乐分享,实践出真知,最后,祝大家能够像我一样在阅读中享受本书带来的乐趣! Read a bit and take it out, then come back read some more. 俞黎敏 前言 欢迎你阅读本书,其内容涵盖了Servlet 3.0和JSP 2.2方面的技术。 Java Servlet技术,或简称Servlet,是Java中用于开发Web应用程序的基本技术。Sun公司于1996年发布了Java Servlet技术,与CGI(Common Gateway Interface,公共网关接口)形成竞争。之后,它成为在Web中生成动态内容的标准。CGI的主要问题在于,它为每一个HTTP请求都创建一个新的进程。因为创建进程需要花费大量的CPU周期,这使得编写可扩展的CGI程序变得极为困难。另一方面,Servlet程序也比CGI程序运行得更快,这是因为Servlet执行完它的第一个请求之后,就会驻留在内存中,等待后续的请求。 自从Servlet面世以来,也开发出了许多基于Java的Web框架,以帮助程序员更迅速地编写Web应用程序。这些框架可以使我们只关注业务逻辑,而不在编写样板代码(boilerplate code)上花费太多的时间。但你还是需要了解Servlet的基本知识。后来,JavaServer Pages(JSP)发布了,这使得编写Servlet变得更加轻松了。或许你正在使用一种很好的框架,如Struts 2、Spring MVC,或者JavaServer Faces。但是,如果没有充分理解Servlet和JSP方面的知识,你将无法进行高效的编码。顺便说一下,Servlets是指在Servlet容器中运行的Java类。Servlet容器或者Servlet引擎,就像是一个Web服务器,但它能够生成动态的内容,而不只是提供静态的资源。 目前的Servlet 3.0是在JSR(Java Specification Request,Java规范请求)315中定义的(http://jcp.org/en/jsr/detail?id=315)。它需要用Java Standard Edition 6或者更新的版本。JSP 2.2则是在JSR 245中定义的(http://jcp.org/en/jsr/detail?id=245)。本书假设你事先已经了解Java和面向对象编程。如果你是刚刚接触Java,那么建议你先看一下笔者的另一本书:《Java 7: A Beginner Tutorial》,ISBN 978-0-9808396-1-6。 下一节将讨论Servlet/JSP应用程序架构(Application Architecture)、HTTP协议,以及书中各章节的主要内容。 Servlet/JSP应用程序架构 Servlet是一个Java程序。一个Servlet应用程序经常包含一个或者多个Servlet。JSP页面要被翻译成Servlet,并进行编译。 Servlet应用程序是在Servlet容器中运行的,它不能自动运行。Servlet容器将用户的请求传给Servlet应用程序,并将Servlet应用程序的响应回传给用户。大多数Servlet应用程序至少都包含几个JSP页面。因此,将Java的Web应用程序称为"Servlet/JSP应用程序"比"Servlet应用程序"更为恰当一些。 Web用户可以利用如Internet Explorer、Mozilla Firefox或者Google Chrome这类Web浏览器来访问Servlet应用程序。一个Web浏览器相当于一个Web客户端。图1中展示了一个Servlet/JSP应用程序的架构。 图1 Servlet/JSP应用程序架构 Web服务器与Web客户端之间通过双方都熟悉的一种语言进行通信,即超文本转移协议(HyperText Transfer Protocol,HTTP)。为此,Web服务器也称作HTTP服务器。关于HTTP的更多内容请参见下一节。 Servlet/JSP容器是一种特殊的Web服务器,它可以处理Servlet,并提供静态内容。在过去,人们更习惯于将Servlet/JSP容器作为HTTP服务器的一个模块来运行,如Apache HTTP Server,因为他们认为HTTP服务器比Servlet/JSP容器更健壮。在这种情况下,Servlet/JSP容器的任务是生成动态内容,HTTP服务器则负责提供静态资源。如今,人们认为Servlet/JSP容器已经成熟,它们不需要HTTP服务器就可以进行广泛的部署。Apache Tomcat和Jetty是其中最为盛行的两种Servlet/JSP容器,并且它们都是免费、开源的。可以分别从以下两个网站下载二者:http://tomcat.apache.org和http://jetty.codehaus.org。 Servlet和JSP是Java Enterprise Edition(EE)定义的众多技术当中的两种。其他的Java EE技术还包括Java Message Service(JMS)、Enterprise JavaBeans(EJB)、JavaServer Faces(JSF),以及Java Persistence。Java EE 6(当前的最新版本)的完整技术列表,可以在以下网站找到: 运行Java EE应用程序时,需要一个Java EE容器,如GlassFish、JBoss、Oracle WebLogic,以及IBM WebSphere。也可以将Servlet/JSP应用程序部署在Java EE容器中,只不过用Servlet/JSP容器已经绰绰有余,它还比Java EE容器更轻量化。Tomcat和Jetty则不属于Java EE容器,因此它们不能运行EJB或者JMS。 超文本转移协议(HTTP) HTTP协议使得Web服务器与浏览器之间可以通过互联网(Internet)或者企业内部网(Intranet)来交换数据。万维网联盟(World Wide Web Consortium,W3C)是一个开发标准的国际化社区,它负责修订和维护这个协议。HTTP的第一个版本是HTTP 0.9,之后是HTTP 1.0。再后来,HTTP 1.0又被目前的HTTP 1.1取代。HTTP 1.1是在W3C的RFC(Request for Comments)2616中定义的,它可以通过以下网址下载到:http://www.w3.org/Protocols/HTTP/1.1/rfc2616.pdf。 Web服务器每天24小时,每周7天不间断地运行,随时等待HTTP客户端(一般是Web浏览器)的连接和资源请求。在HTTP中,总是由客户端发起连接,服务器从不主动联系客户端。在查找某一个资源时,互联网用户是通过单击一个包含URL(Uniform Resource Locator,统一资源定位器)的链接,或在他/她的浏览器地址栏中输入一个URL进行的。下面举URL的两个例子: URL的第一部分是http,它是协议的标识。并非所有的URL都用HTTP。例如,下面这两个URL虽然没有使用HTTP,但它们也都是有效的: 一般来说,URL的格式是这样的: 或者如下所示: 以上方括号中的内容都是可选的,因此URL也可以像http://yahoo.ca或者http://192. 168.1.9这么简单。顺便说一下,IP地址其实是分配给某一台计算机或者另一种设备的一个数字标签。一台计算机可以有多个域名,因此,几个域名也可以共用一个IP地址。换句话说,如果不用http://google.com,也可以用它的IP地址:http:/209.85.143.99。为了查出某个域名的IP地址,可以在计算机的控制台或命令行中使用ping命令,如: IP地址很难记住,因此人们更喜欢使用域名。但你知道吗?像example.com和example.org这样的域名是无法购买到的,因为它们是留着备用的,比如编写文档时作为示例用。 主机名host部分可以有,但与没有主机名host的地址相比,它表示的则是互联网或者内部网中另一个完全不同的位置。例如,http://yahoo.com(没有主机名host)与http://mail.yahoo.com(有主机名,为mail)表示的是两个完全不同的位置。在过去,www是最盛行的主机名,因此它变成是默认的。一般来说,http://www.domainName就是指http://domainName。 80是HTTP的默认端口。因此,如果Web服务器是在80端口上运行,那么不需要端口号也能到达服务器。但是,有的时候,如果Web服务器不是在端口80上运行的,那么就需要输入端口号。例如,Tomcat默认是在端口8080上运行,因此需要提供端口号: localhost是一个保留名称,一般用来表示本机,即正在运行Web浏览器的这台计算机。 URL中的context部分是指应用程序的名称,但这个也是可选的。Web服务器可以运行多个context或多个应用程序,其中一个可以设置为默认的context。如果要请求的是默认context中的资源,则URL中的context部分就可以忽略。 最后,一个context可以有一个或者多个默认资源(一般为index.html、index.htm或者default.htm)。一个没有资源名称的URL,通常被当作是默认资源。当然,如果一个context中存在多个默认资源,那么当客户端没有指定资源名称时,将总是返回优先级最高的那一个。 在资源名称之后,一般是一个或者多个查询字符串。查询字符串是指可以传到服务器进行处理的一个键/值对。后面的章节会介绍到更多关于查询字符串的内容。 接下来的几个小节将详细介绍HTTP请求和响应。 HTTP请求 一个HTTP请求中通常包含三个部分: 方法/统一资源标识符(Uniform Resurce Identifier,URI)/协议/版本 请求标头 实体主体 下面是一个HTTP请求的示例: 方法/URz/协议版本号,放在请求的第一行。如: 这里的POST是请求方法,/examples/default.jsp是URI,HTTP/1.1是协议/版本号部分。 HTTP请求可以利用HTTP标准中定义的其中一个请求方法。HTTP 1.1支持7种请求类型:GET、POST、HEAD、OPTIONS、PUT、DELETE以及TRACE。GET和POST是互联网应用程序中最常用的。 URI用于指定一个互联网资源,它通常解读为是相对于服务器的根目录。因此,它始终应该以一个正斜线(/)开头。统一资源定位器(URL)实际上也是一种URI(详情请查看http://www.ietf.org/rfc/rfc2396.txt)。 在一个HTTP请求中,请求标头包含关于客户端环境和请求实体主体的有用信息。例如,它可以包含为浏览器设置的语言、实体主体的长度等。各标头之间用一个回车换行(Carriage Return/LineFeed,CRLF)序列符隔开。 在标头和实体主体之间是一个空行(CRLF),它对于HTTP请求格式是很重要的。CRLF告诉HTTP服务器,实体主体从这里开始。在有些互联网编程书籍中,它们是把这个CRLF当作是HTTP请求的第四个部分。 在前一个HTTP请求中,实体主体只有下面这一行: 实体主体常常比一个典型的 HTTP请求更长。 HTTP响应 与HTTP请求类似,一个HTTP响应中通常也包含三个部分: 协议/状态码/描述 响应标头 实体主体 下面是一个HTTP响应的示例: 响应标头的第一行与请求标头的第一行类似。它在告诉我们,所使用的协议版本是HTTP 1.1,并且请求成功(200是成功状态码)。 响应标头也包含与HTTP请求中的标头类似的有用信息。响应的实体主体是响应本身的HTML内容。标头和实体主体之间用一系列的回车换行符(CRLF)隔开。 当且仅当Web服务器能够找到所请求的资源时,才会发出状态码200。如果无法找到某个资源,或者无法理解请求,服务器就会发出一个不同的请求代码。例如,401是未授权访问的状态码,405表示未经允许的HTTP方法。关于HTTP状态码的完整列表,请查看以下在线文档: 关于本书 下面介绍一下各章节的主要内容。 第1章介绍Servlet API,还示范了几个简单的Servlet。该章主要关注Servlet API 4个Java包当中的两个:javax.servlet包和javax.servlet.http包。 第2章讨论Session追踪,或称作Session管理。由于HTTP的无状态性,因此这是Web应用程序开发中一个非常重要的主题。该章探讨保持状态的4种技术:改写URL、隐藏域、cookie以及HTTPSession对象。 JavaServer Pages(JSP)是Servlet的一种补充技术。第3章介绍JSP语法,包括它的指令、脚本元素以及动作。 第4章阐述JSP 2.0中增加的最重要特性之一:Expression Language(EL)。EL旨在能够使我们设计出无脚本的JSP页面,并且能够协助你写出更简短、更高效的JSP页面。在该章中,你还会学到如何利用EL来访问JavaBeans和内置对象(Scoped Object)。 第5章阐述JavaServer Pages Standard Tag Library(JSTL)中最重要的类库,这是一个定制标签类库的集合,用于解决像迭代映射或集合、条件测试、XML处理以及数据库访问和数据操作这类常见的问题。 通常情况下,是利用JSTL访问内置对象,以及完成JSP页面中的其他任务。但是,对于更为具体的任务,可能需要你自己编写定制标签。第6章就教你具体的编写方法。 第7章讨论标签文件,这是JSP 2.0中的一项新特性,它使得编写定制动作变得更加简单。该章讨论只利用标签文件来编写定制标签的几个方面。 第8章讨论Servlet中的事件驱动编程。其中讨论了Servlet API中的事件类和监听器,并介绍了如何编写监听器,以及如何在Servlet/JSP应用程序中使用它们。 第9章讲解过滤器,它们是拦截请求的Web对象。该章内容涵盖了Filter API,其中包括Filter、FilterConfig及FilterChain接口,并介绍如何通过实现Filter接口来编写过滤器。 第10章解释Model 2架构,这是针对除最简单的Java Web应用程序之外的建议架构。该章还提供了几个范例,展示了Model 2应用程序中的不同组件。 第11章展示如何利用Servlet 3的文件上传特性,以及如何在客户端改善用户的体验。 第12章解释如何通过编程方式将一个资源发送到浏览器。 Servlet API提供了用于包装Servlet请求和响应的类。在第13章中,将会学到如何利用Decorator模式及这些类来改变Servlet请求和响应的行为。 第14章讨论Servlet 3.0中的一项新特性,其用来处理异步的操作。如果Servlet/JSP应用程序中有一个或多个长时间运行的操作,那么这项特性就特别有帮助。该特性的原理是将那些操作分配给一个新的线程,从而将处理线程的请求释放回到池中,准备为另一个请求提供服务。 第15章阐述如何通过声明和编程方式来保护Java的Web应用程序。这里讨论了4个主要的安全性主题:验证、授权、保密性及数据完整性。 第16章讨论Servlet/JSP应用程序的部署过程,以及部署描述符中的元素。 第17章阐述Servlet 3中的两项新特性。动态注册是指不需要重启应用程序就可以动态地注册Web对象。框架开发者自然会喜欢Servlet容器初始化。 第18章介绍作为MVC框架的Struts 2。该章阐述了Struts 2的基础组件和配置,并展示了一个简单的应用程序。 附录A阐述如何安装和配置Tomcat,以及如何在各种操作系统中运行它。 附录B列出可以用来配置Web对象的所有注解,如Servlet、监听器及过滤器。这些注解是Servlet 3的新特性,它们使部署描述符变成是可选的。 附录C阐述如何利用KeyTool程序生成公/私钥对,以及如何请一家可信任的证书颁发机构,将公钥变成一份数字证书。 下载应用程序范例 从以下网站可以下载到本书配套应用程序范例的压缩档: 选择框架 当你学完本书,并掌握了Servlet和JSP之后,最好至少选择学习一种Web框架。目前有许多优秀的框架可以免费使用,例如Struts 2、JavaServer Faces、Spring MVC及Google Web Toolkit等都不错。框架可以解决Servlet/JSP开发中常见的问题,大大缩短开发时间。 你可以根据工作需要,选择目前最需要的那些框架。 导语摘要 克尼亚万编著的《Servlet和JSP学习指南》是针对有Java编程语言基础的Web开发者的,JavaWeb应用程序开发是一种很成熟并且很热门的编程技术。同时,它也汇集各种技术于一身,经常令初学者不知道从何入手。如果你也有同感,那么本书就很适合你,因为它就是一本特意为初学者量身定制的教程。作为一套面对初学者的教程,本书不是要教会你每一种Servlet/JSP技术。如果你是一名有经验的Web应用开发者,对Servlet3.0的新特性感兴趣,那么本书涵盖新特性的章节正是你所需要阅读并实践的内容。 作者简介 Budi Kurniawan,全球知名Java技术专家和资深Java企业级应用架构师,是软件咨询和技术出版公司Brainy Software的创始人,经验十分丰富。他还是一位经验丰富的技术作家,撰写了深入揭示Tomcat工作原理和设计理念的名著《How Tomcat Works》(《深入剖析Tomcat》,机械工业出版社出版)和
— 没有更多了 —
以下为对购买帮助不大的评价