2.1网页是基于客户端发送的数据。
例如,搜索引擎的结果页面和在线商店的订单确认页面都是特定于特定的用户请求的。你不知道什么是显示直到你读用户提交的数据之前。请记住,用户提交两种类型的数据:显式(即HTML表单的数据)和隐式(即HTTP请求头)。任一种输入可用于生成输出页。特别是,它是很常见的建立一个用户特定的页面,根据一个cookie值。
2.2网页是基于频繁更改的数据。
如果每一个请求的页面更改,那么你当然需要在请求时间建立响应。但是,如果它只是周期性的变化,你可以这样做:你可以周期性地建立一个新的网页上的服务器(独立的客户端请求),或者你可以等待,只有当用户请求的页面。正确的方法取决于情况,但有时也更方便的是,这样做的用户请求等待。例如,天气预报或新闻标题网站可以动态生成页面,或者返回一个以前内置的页面,如果该页仍然是最新的。
2.3网页使用来自企业数据库或其他服务器端源的信息。。
如果信息在数据库中,则需要服务器端处理,即使客户端使用的是动态网页内容,你也需要一个像小程序的服务器端来搜索引擎站点。我们可以设想一下,为了得到一个搜索引擎地址,我们可以通过它本身使用一个小程序达到这个目的。
下载50兆字节的小程序,请等待!”显然,那是愚蠢的;你需要跟数据库谈谈。从客户端到Web层到数据库(三层结构)从applet直接到数据库(二层结构)提供了增强的灵活性和安全性很少或没有性能损失。毕竟,数据库调用通常是限速步骤,所以通过网络服务器不慢下来。事实上,一个三层的方法往往更快,因为中间层可以执行缓存和连接池。
原则上,servlet并不局限于Web服务器或应用服务器处理HTTP请求,也可用于其他类型的服务器以及。例如,servlet能够嵌入到FTP或邮件服务器来扩展其功能。而且,一个API的SIP Servlet(会话初始化协议)服务器最近被标准化(见http://jcp.org/en/jsr/detail?标识= 116)。然而在实践中,使用servlet,这还没有抓到,我们只论述HTTP servlets。
相比传统的CGI和其他可选择的类似的CGI技术,java servlets是更有效率,更容易使用,功能更强大,更轻便,更安全,更便宜。
3.1 高效
传统的CGI要启动一个新的进程的每个HTTP请求。如果CGI程序本身比较短,起动过程中的开销可以支配的执行时间。用servlet的话,java虚拟机在运行和处理每个请求一个轻量级的java线程,不是一个重量级的操作系统进程。同样,在传统的CGI,如果有N个请求相同的CGI程序,CGI程序的代码加载到内存N次。servlet,然而,会有N个线程,但是只有一个servlet类的单一副本将被加载。这种方式减少了服务器的内存要求和节省时间的实例化更少的对象。最后,当CGI程序完成处理请求,程序终止。这种方法使得它很难高速缓存计算,保持数据库连接打开,并执行其他的优化,依赖于持久性的数据。然而,留在记忆里的servlet,即使他们完全反应,因此可以直接存储客户请求之间的任意复杂的数据。
3.2 方便
servlet的自动解析和解码HTML的表单数据有一个广泛的基础设施,读取和设置HTTP头,处理cookie,跟踪会话,和许多其他的高级功能。在CGI,你必须做很多这样的自己。另外,如果你已经知道了java编程语言,为什么学习Perl呢?你已经相信java技术使更可靠和可重复使用的代码要比Visual Basic,VBScript,或者C++。为什么要回到那些语言的服务器端编程?