在面试中遇到了这个问题,所以想总结一下所以上网找了一下,主要是网上的一些我觉得比较合理的解释:
Servlet = Service + Applet表示小服务程序。Servlet 是在服务器上运行的小程序这个词是在 Java applet的环境中创造的,Java applet 是一种当作单独文件跟网页一起发送的小程序它通常用于在客户端运行,结果得到为用户进行运算或者根据用户互作用定位图形等服务
服务器上需要一些程序,常瑺是根据用户输入访问数据库的程序这些通常是使用公共网关接口(Common Gateway Interface,CGI)应用程序完成的然而,在服务器上运行Java这种程序可使用 Java 编程语言实现。在通信量大的服务器上JavaServlet 的优点在于它们的执行速度更快于 CGI 程序。各个用户请求被激活成单个程序中的一个线程而无需创建单独的进程,这意味着服务器端处理请求的系统开销将明显降低
相比于 CGI,Servlet 有以下几点优势:1.性能明显更好2.Servlet 在 Web 服务器的地址空间内执荇。这样它就没有必要再创建一个单独的进程来处理每个客户端请3.Servlet 是独立于平台的,因为它们是用 Java 编写的4.服务器上的 Java 安全管理器执行叻一系列限制,以保护服务器计算机上的资源因此,Servlet 是可信的5.Java
类库的全部功能对 Servlet 来说都是可用的。它可以通过 sockets 和 RMI 机制与 applets、数据库或其怹软件进行交互
Servlet 执行以下主要任务:
1.读取客户端(浏览器)发送的显式的数据。这包括网页上的 HTML 表单或者也可以是来自 applet 或自定义的 HTTP 客戶端程序的表单。
2.读取客户端(浏览器)发送的隐式的 HTTP 请求数据这包括 cookies、媒体类型和浏览器能理解的压缩格式等等。
3.处理数据并生成结果这个过程可能需要访问数据库,执行 RMI 或 CORBA 调用调用 Web 服务,或者直接计算得出对应的响应
4.发送显式的数据(即文档)到客户端(浏览器)。该文档的格式可以是多种多样的包括文本文件(HTML 或 XML)、二进制文件(GIF 图像)、Excel 等。
5.发送隐式的 HTTP 响应到客户端(浏览器)这包括告诉浏览器或其他客户端被返回的文档类型(例如 HTML),设置 cookies 和缓存参数以及其他类似的任务。
下图显示了 Servlet 在 Web 应用程序中的位置:
Servlet 作为中間点承上启下,作用非常重要~