【叶凡网络】说说Java Servlet与Web容器之间的关系

2014-01-27 11:02:38 | 新闻来源:叶凡网络 | 点击量:902

仅仅是概要的采用以比较容易理解的方式描述了Web容器与Servlet之间的关系,以及当接受到请求之后的处置流程。实际的Web容器中,会比这要复杂很多。就开始涉及到通讯问题。客户/服务器(也叫C/S应用)时期,自从计算机软件开发进入网络时代。每个软件都有自己的客户端和服务器端软件。并且客户端和服务器端之间的通讯协议差别也很大。后来随着互联网的发展,基于浏览器/服务器的应用逐渐成为主流,通讯协议也统一到HTTP协议。但是HTTP协议之上,如何处置来自客户端的请求信息,以及如何对请求进行回应,则经历了很长时间也没有统一下来。目前,对于这个问题的解决方案主要有两种,一个是CGI另一个是

简称CGI一种根据请求信息动态发生回应内容的技术。通过CGIWeb服务器可以将根据请求不同启动不同的外部顺序,通用网关接口。并将请求内容转发给该程序,顺序执行结束后,将执行结果作为回应返回给客户端。也就是说,对于每个请求,都要发生一个新的进程进行处置。因为每个进程都会占有很多服务器的资源和时间,这就导致服务器无法同时处置很多的并发请求。另外CGI顺序都是与操作系统平台相关的虽然在互联网迸发的初期,CGI为开发互联网应用做出了很大的贡献,但是随着技术的发展,开始逐渐衰落。

可以在顺序运行期间任何时候加载这个类,Java一种动态加载和运行的语言。也就是说当应用顺序持有一个类的地址(CLA SSPA TH和名称(包名和类名)情况下。并创建和使用该类的对象。Servlet就是基于这个机制与Web容器融合在一起的目前已知的所有支持JavaServletWeb容器都是采用Java开发的当Web容器接收到来自客户端的请求信息之后,会根据URL中的Web元件地址信息到Servlet队列中查找对应的Servlet对象,如果找到则直接使用,如果没有找到则加载对应的类,并创建对象。也就是说,Servlet对象是第一次被使用的时候才创建的并且一旦创建就会被反复使用,不再创建新的对象。所有创建出的Servlet对象会在Web服务器停止运行的时候统一进行垃圾回收。

所以当时并没有得到重视,Servlet最初是1995年由JameGosl提出的因为使用该技术需要复杂的Web服务器支持。也就放弃了后来随着Web应用复杂度的提升,并要求提供更高的并发处置能力,Servlet被重新捡起,并在Java平台上得到实现,现在提起Servlet指的都是JavaServletJavaServlet要求必需运行在Web服务器当中,与Web服务器之间属于分工和互补关系。确切的说,实际运行的时候JavaServlet与Web服务器会融为一体,如同一个顺序一样运行在同一个Java虚拟机(JVM当中。与CGI不同的Servlet对每个请求都是单独启动一个线程,而不是进程。这种处置方式大幅度地降低了系统里的进程数量,提高了系统的并发处置能力。另外因为JavaServlet运行在虚拟机之上的也就解决了跨平台问题。如果没有Servlet呈现,也就没有互联网的今天。

随着使用范围的扩大,Servlet出现之后。人们发现了一个很大的一个弊端。那就是为了能够输出HTML格式内容,需要编写大量重复代码,造成不必要的重复劳动。为了解决这个问题,基于Servlet技术发生了JavaServetPage技术,也就是JSPServlet和JSP两者分工协作,Servlet偏重于解决运算和业务逻辑问题,JSP则偏重于解决展示问题。Servlet与JSP一起为Web应用开发带来了巨大的贡献,后来呈现的众多JavaWeb应用开发框架都是基于这两种技术的更确切的说,都是基于Servlet技术的

Web容器需要一个用来描述这种对应关系的文件,为了解决客户端请求地址与JavaServlet之间对应关系问题。一般是web.xml文件。如果一个Web应用顺序中存在很多个Servlet那么web.xml会变得非常庞大。Servlet3.0规范推出之后,允许在Servlet代码中使用声明式语法来代替web.xml中的描述信息,这才让web.xml瘦身下来。下图是这个过程的一个示意图。

上一篇:【叶凡网络】台高中课纲微调有一点去日本化不美化殖民统治 下一篇:【叶凡网络】民工回家过年乡亲舍不得吃李克强所送年货回家过年