1、1JSP:完整的参考前言第一波的新技术往往超过了它所产生的预期。那些生产第二波的人从他们的前辈们的经验中获益和真正的价值。这是 Java 的情况。客户端浏览器应用程序(applet)遇到限制主要在三个方面: 浏览器不兼容 安全过度 长时间下载产生的性能问题服务器端 Java 的出现改变了这一切。Java servlet 和JavaServerPages(JSP)提供一个安全的、健壮的、平台独立的技术让 Java 的力量在电子商务和企业网络计算得以体现。在 JSP 越发繁荣和 JSP 技术高涨的需求的情况下,几乎所有的财富 500 强公司现在或不久将部署服务器端 Java 应用程序。这本书的目的
2、是提供一个完整的 JSP 技术,从 JSP 的 Web 编程环境和元素,然后更深入了解考试的高级主题。1. 网络市场罗马论坛位于台伯河中心附近。二千年前,罗马论坛权力在罗马世界的中心。那是凯旋游行发生,普通商品和服务的交换,而新闻和意见自由共享的地方(我们常见的“论坛”)。今天,互联网是全球电子市场。互联网在商品的交换中心,服务,和信息,企业和个人消费者中占据主导地位。像罗马论坛,互联网的增长是通过先进的技术新计算机语言,广泛接受的网络标准和廉价的硬件。这本书是关于JavaServer Pages,汇集了 Web 浏览器的支持术,Web 服务器和数据库系统应用程序的开发,访问,和部署。Java
3、 技术在连接性,可靠性、可伸缩性和安全性方面已经被证明是无与伦比的。没有人能肯定地预测未来趋势。22. Web 应用程序的进化作为最引人注目的东西之一,万维网最初不是作为应用程序环境。然而今天,Web 应用程序成为互联网使用最多的特别是, 电子商务的使用。本章简要追溯了万维网的起源,Web 应用程序,以及相关技术,设置更详细的背景技术探索在这本书的其余部分。2.1 Web 的产生1990 年,万维网及其相关的超文本传输协议(HTTP)在欧洲粒子物理实验室(CERN) 被提出。Tim bernerslee 开发 HTTP 作为分配的网络协议文档并且写出了第一个 Web 浏览器。在 1991 年和
4、 1992 年,该系统在欧洲核子研究中心所和其他高能物理实验室以及大学被广泛使用,人气稳步增长。1993 年,马赛克浏览器的出现导致了商业网络使用的爆炸。在过去 5 年中,全世界有超过650000 的 Web 服务器正在被数以百万计的用户使用。2.2 Web 编程模型的成长应用程序环境的发展随着时间的推移,每个阶段的技术作为新想法的跳板。第一操作模式 Web 服务器只是提供文件的请求。在这种环境下,内容不会改变,除非人类作者提供一个新版本的文档。客户端/服务器交互如图 1 所示。图 1 静态文档服务器模型HTTP 是一个简单的请求/响应协议的 Web 浏览器的请求文档(通常使用 GET3命令)
5、和 Web 服务器返回的文档,HTML 数据流的形式之前一些描述性的标题。很显然,如果人类可以通过 Web 服务器修改文档,那么文本处理程序可以像一个Perl 脚本。Web 浏览器不能识别差异,因为一个 HTTP 请求的结果仍然是一个 HTML 数据流。更重要的是,浏览器不仅仅可以发送一个请求,还可以发送参数,通过嵌入在 URL 或发送数据流的请求。这表明一个 HTTP 请求可以被解释为一个数据库查询和查询结果,可用于动态地构建一个 HTML 文档。HTTP Web 服务器的发展搭建了一个新的规范指定通用网关接口(CGI)。CGI 程序调用由 Web 服务器来响应特定类型的请求,通常在一个特定
6、的请求文档目录或文件名有特定的扩展,比如. CGI。请求参数传递的键/值对,和请求头作为环境变量。程序读取这些参数和标题,手头任务执行应用程序访问一个数据库(通常这样做),然后生成一个HTTP 响应。请求的响应发送回 Web 浏览器,就好像它是一个普通的静态文件。图 2 显示了流程流。图 2 CGI 脚本生成动态内容CGI 方便,但它有一个大缺点。通常,CGI 为每个 HTTP 请求生成一个新进程。当流量较低时,这不是一个问题,但它创建了大量开销当交通水平增加。因此CGI 功能不能很好地伸缩。1997 年 Java Servlet API 的发布,并有了显著的提升,紧随 JavaServer
7、Pages(JSP)的 API。这些相关技术提升了 Java Web 服务器、数据库连接,网络4访问,和多线程操作的功能,并且体现在不同的流程模型中。servlet 和 JSP 页面操作的一个实例仍在内存中,同时使用多个线程来响应请求。如图 3 所示,servlet 和 JSP pagescan 利用完整的 Java 2 Enterprise Edition(J2EE)使环境复杂,健壮应用程序。图 3 动态应用程序使用 servlet、JSP 和 J2EE2.3 从客户端转移到服务器端的解决方案Web 应用程序模型发展已经成熟,每个阶段累计的经验已经符合驱动要求。初始波客户端 Java app
8、let 的形式是非常受欢迎的,但在现实当中还是有一些遗憾。浏览器之间存在较大的不兼容,长时间下载的情况下解调器调制缓慢,存在的安全问题也限制了 applet 的实用性。正因为如此,applet 发展放缓,而服务器端 Java 成为了最大的增长领域。服务器端 Java applet 的没有限制的环境。没有浏览器发生矛盾,因为浏览器不需要举办一个 Java 虚拟机。浏览器只需要渲染 HTML,甚至最古老的浏览器5做得相当好。同时,不涉及客户端设置,没有大型类文件的下载。同样,安全问题仅限于那些已经由 Web 服务器接手的,它通常是在一个封闭的环境控制。JSP 已经被证明是一个成功的开发 Web 应
9、用程序的服务器端技术和并且为开发 Web 应用程序提供一个很好的基础。3. JSP 概述一个 Java 服务器页面(JSP)是一个 Web 页面的模板,使用 Java 代码动态生成一个 HTML 文档。jsp 是运行在一个服务器端组件,被称为一个 JSP 容器,将它们转换为等价的 Java servlet。出于这个原因,servlet 和 JSP 页面是密切相关的。在很大程度上,两种技术都有其各自的优势。因为它们都是是 servlet,JSP 页面有 servlet 的优点: 它们比 CGI 脚本有更好的性能和可伸缩性,因为它们在内存中是持久的和多线程。 不需要特殊的客户端设置。 它们的内置使
10、得应用程序编程支持 HTTP 会话。 它们有完全访问 Java 技术网络意识、线程和数据库连接没有客户端程序的限制。但是,此外,JSP 页面有自己的优势。 它们是在必要时自动重新编译。 因为它们存在于普通 Web 服务器文档空间,处理 JSP 页面比解决 servlet 简单。 由于 JSP 页面类似 html 的,它们与 Web 开发工具相比有更大的兼容性。3.1 JSP 如何工作一个 JSP 页面中存在三种形式: 表单开发人员实际上写道。它存在于一个文本文件的延伸。jsp,包括一个混合的 HTML 模板代码,Java 语言语句,描述如何生成和 jsp 指令和操作 Web页面服务特定请求 J
11、SP 容器将 JSP 源代码转换为等效的 Java servlet 的源代码。此源代码通常保存在一个工作区域并且通常是有利于调试的。6 编译后的 Java 类和其他 Java 类,生成的 servlet 代码在一个类文件中被编译成字节码,可以加载和执行。JSP 容器管理这些自动基于每个文件的时间戳形成的 JSP 页面。为了回应一个HTTP 请求, 在最后一次编译 java 源代码后,容器检查 jsp 源文件是否已经修改。如果是这样,容器重译 JSP 源代码到 Java 源代码重并且新编译源代码。图4 显示了 JSP 容器所使用的过程。当请求一个 JSP 页面,容器首先判断类的名称对应的 JSP
12、 文件。如果类不存在或者如果它是比 jsp 文件旧(即 jsp 源代码改变了因为它最后一次编译),那么一个等价的 servlet 容器创建 Java 源代码和编译它。如果 servlet 的实例不是已经运行,容器加载 servlet 类并创建一个实例。最后,集装箱分派一个线程来处理当前 HTTP 请求的加载实例。图 4 JSP 容器所使用的逻辑来管理 JSP 转换4. 超文本传输协议(HTTP)的概述74.1 什么是超文本传输协议超文本标记语言(HTML)是语言用来描述 Web 文档的内部,超文本传输协议(HTTP)是语言用来描述如何通过互联网发送这些文件。了解网络编程的关键是理解该协议在其运
13、作和环境。HTTP 请求文档的语言在因特网上规定的规则浏览器发出请求和服务器提供响应。这组规则或者协议的方法包括: 要求一个文档的名字 数据格式达成一致 确定用户是谁 决定如何处理过时的资源 表示请求的结果和其他有用的功能 HTTP 写成由一组命令行普通的 ASCII 文本。当你使用一个 Web 浏览器,你不直接输入 HTTP 命令。相反,当你输入一个URL 或点击超链接时,浏览器将你的行为转化为 HTTP 命令请求从服务器文档中指定的 URL。Web 服务器查找文档并将其发送回浏览器的显示,以及其他相关的图形和超链接4.2 HTTP 规范因特网标准通常是在请求中指定的评论(RFC)发表的互联网工程任务组(IETF)。这些 rfc 是由互联网的研究和开发社区广泛接受。因为他们的标准文档,他们往往是用正式语言写成的法律文件。这使得它们不合适最为教程,但是宝贵的参考。rfc 屈指可数,发布之后永远不会改变。如果一个有标准的更新,那么意味着新的 RFC 发布。由于其标准,rfc 是广泛使用在互联网。1