web应用程序必须要处理这个差异。
对于Web应用程序而言,需要跨越HTTP协议的两个障碍——无状态和基于文本。无状态的协议不记录收到的多个请求之间的关系。每一个请求都会被当做服务器接收到的唯一的请求处理。HTTP服务器没有保存用来追踪和逻辑上连接来源于一个给定客户的多个请求的记录。服务器有客户端的地址,但是这个地址只用来返回当前请求的文档。如果一个客户回来请求其他文档,服务器不知道这是同一个客户的重复访问。
但是如果我们想构造一个含有更复杂用例的复杂应用程序,这就行不通了。以最简单、最常见的安全的Web应用程序为例,一个安全的web应用程序需要对它的用户进行身份验证。要做到这点,客户发送用户名和密码的请求,必须能够通过某种方式与这个会话期间来源于该客户的其他请求关联起来。不能记录不同请求之间的关系,连现代Web立用程序的入门功能都不能实现。每一个现代Web应用程序都必须解决这个问题。
同样麻烦的是,HTTP还是基于文本的。将基于文本的技术与强类型的技术(例如Java)匹配起来引发了大量的数据绑定工作。在一个HTTP请求中,所有的数据都以文本方式表示。在处理过程的某个地方,这些编码的数据必须被映射到Java数据类型。而且,这个转换在请求处理过程的两端都要发生。输入请求参数必须被迁移到Java环境,发出的响应必须将数据从Java带回到基于文本的HTTP响应。虽然不是什么高深的技术,但它却为Web应用程序带来了成堆的烦琐工作,这些任务既容易出错又浪费时间。
2.Java Servlet API
Java ServletAPI帮助缓解了一些痛苦。这个重要的技术将HTTP公开给Java平台。这意味着JaVa开发人员可以依据HTTP客户/服务器通信以直观的面向对象的抽象方式编写HTTP服务器代码。ServletAPI中的核心对象是Servlet、请求(request)和响应(response)。Servlet是一个单例(singleton)的Java对象,它全部的用途是接收请求,以及在任意的后端处理之后返回响应。请求对象封装了各种各样的请求细节,包括通过表单字段提交的请求参与,以及查询字符串参数。响应对象包含如响应首部、生成响应文本的输出流等一些关键项目。总之,Servlet接受请求对象,检查其中的数据,执行适当的后台逻辑,之后向客户返回响应。基础你应该知道Sun公司和Servlet规范。如果你不熟悉Sun公司的做事方式,这里是一个简单知识的介绍。Sun公司提供技术规范,例·~wSeiMet API。这个规范是在社区中产生的,其中包括感兴趣的各方,Sun公司本身并不是很重要。规范详细描述了这个API必须遵守的职责和契约,真正的实现由第三方厂商提供。以Servlet规范为例,其实现是Servlet容器(Servletcontainer)。这些容器可以是独立的实现,例如非常流行的Apache Tomcat,也可以被集成到其他更大的应用程序服务器中。这些容器既有开源软件又有完全商业化的产品。如果你不熟悉Servlet规范,我们建议你阅读一下。它简明扼要,读起来也很流畅。
展开
——Amazon.com读者评论