(一)概述:
Servlet 为建立基于 web 的应用程序提供了基于组件、独立于平台的方法,能够不受 CGI 程序的性能限制。Servlet 有权限访问全部的 Java API,包括访问企业级数据库的 JDBC API。
(二)优点与做用:
Java Servlet 是运行在 Web 服务器或应用服务器上的程序,它是做为来自 Web 浏览器或其余 HTTP 客户端的请求和 HTTP 服务器上的数据库或应用程序之间的中间层。
使用 Servlet,您能够收集来自网页表单的用户输入,呈现来自数据库或者其余源的记录,还能够动态建立网页。
Java Servlet 一般状况下与使用 CGI(Common Gateway Interface,公共网关接口)实现的程序能够达到殊途同归的效果。可是相比于 CGI,Servlet 有如下几点优点:
*性能明显更好。
*Servlet 在 Web 服务器的地址空间内执行。这样它就没有必要再建立一个单独的进程来处理每一个客户端请求。
*Servlet 是独立于平台的,由于它们是用 Java 编写的。
*服务器上的 Java 安全管理器执行了一系列限制,以保护服务器计算机上的资源。所以,Servlet 是可信的。
*Java 类库的所有功能对 Servlet 来讲都是可用的。它能够经过 sockets 和 RMI 机制与 applets、数据库或其余软件进行交互。
Servlet 执行如下主要任务:
*读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单,或者也能够是来自 applet 或自定义的 HTTP 客户端程序的表单。
*读取客户端(浏览器)发送的隐式的 HTTP 请求数据。这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
*处理数据并生成结果。这个过程可能须要访问数据库,执行 RMI 或 CORBA 调用,调用 Web 服务,或者直接计算得出对应的响应。
*发送显式的数据(即文档)到客户端(浏览器)。该文档的格式能够是多种多样的,包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
*发送隐式的 HTTP 响应到客户端(浏览器)。这包括告诉浏览器或其余客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数,以及其余相似的任务。
Servlet 包
Java Servlet 是运行在带有支持 Java Servlet 规范的解释器的 web 服务器上的 Java 类。
Servlet 可使用 javax.servlet 和 javax.servlet.http 包建立,它是 Java 企业版的标准组成部分,Java 企业版是支持大型开发项目的 Java 类库的扩展版本。
这些类实现 Java Servlet 和 JSP 规范。在写本教程的时候,两者相应的版本分别是 Java Servlet 2.5 和 JSP 2.1。
Java Servlet 就像任何其余的 Java 类同样已经被建立和编译。在您安装 Servlet 包并把它们添加到您的计算机上的 Classpath 类路径中以后,您就能够经过 JDK 的 Java 编译器或任何其余编译器来编译 Servlet。
(三)比较——CGI: CGI:(Common Gateway Interface),简称CGI。在物理上是一段程序,运行在服务器上,提供同客户端HTML页面的接口。 这样说大概还很差理解。那么咱们看一个实际例子:如今的我的主页上大部分都有一个留言本。留言本的工做是这样的:先由用户在客户端输入一些信息,如名字之类的东西。接着用户按一下"留言"(到目前为止工做都在客户端),浏览器把这些信息传送到服务器的CGI目录下特定的cgi程序中,因而cgi程序在服务器上按照预约的方法进行处理。在本例中就是把用户提交的信息存入指定的文件中。而后cgi程序给客户端发送一个信息,表示请求的任务已经结束。此时用户在浏览器里将看到"留言结束"的字样。整个过程结束。绝大多数的CGI程序被用来解释处理来自表单的输入信息,并在服务器产生相应的处理,或将相应的信息反馈给浏览器。CGI程序使网页具备交互功能。 不足:CGI应用开发比较困难,由于它要求程序员有处理参数传递的知识,这不是一种通用的技能。CGI不可移植,为某一特定平台编写的CGI应用只能运行于这一环境中。每个CGI应用存在于一个由客户端请求激活的进程中,而且在请求被服务后被卸载。这种模式将引发很高的内存、CPU开销,并且在同一进程中不能服务多个客户。 (四)总结: 归纳来说,Servlet能够完成和CGI相同的功能。Servlet提供了Java应用程序的全部优点——可移植、稳健、易开发。 --------------------- 做者:壳壳的后宫 来源:CSDN 原文:https://blog.csdn.net/xiaoyao0909/article/details/52078709 版权声明:本文为博主原创文章,转载请附上博文连接!