【原创】Servlet学习之(一)Servlet是什么

2020-05-08 09:47发布

Servlet学习之(一)Servlet是什么

一、Servlet是什么

Servlet是一个类,是一个用Java语言编写的、实现Servlet接口的类,一个与访问协议和平台无关的,运行在Servlet容器中的Java程序。

Servlet没有main方法,不能独立运行;它只有实例化、初始化、运行、销毁方法,被编译成与平台无关的字节码文件后,需要加载到Servlet容器中才能执行,并且由Servlet容器管理Servlet的整个生命周期,所以,也常常称ServletServlet容器上运行的服务器小程序。

Servlet推出初期,主要是作为支持HTTP协议的WEB服务器上的一种动态网页技术;随着Servlet技术的不断发展,Servlet可以作为支持任何协议的、实现Java API的服务器上的服务程序。

Servlet运行在服务器上,它可以接受来自客户端的请求,并将处理结果返回给客户端,于是,在许多应用中,Servlet主要用于实现动态网页,亦或作为前端页面与后台数据库或者后台服务器程序之间的中间件。


二、Servlet容器

Servlet容器作为支撑Servlet运行的平台,是一个非常重要的部件。也可以把Servlet容器看成是一个装载着许多Servlet对象的容器,Servlet容器负责管理这些Servlet对象。

Servlet容器运行在JVMJava虚拟机)之上,管理Servlet的实例化、初始化、实例对象的运行和销毁,并提供最基础的运行支撑,例如:Servlet容器负责接收请求、转发请求、发送响应、管理会话状态、实现数据共享等等。

Servlet容器至少支持通过HTTP协议访问Servlet,也可以支持其他协议,例如:HTTPSFTPPOPSMTP等。

ServletServlet容器的关系如下图所示:

 

访问Servlet容器中Servlet的过程如下

1客户发送访问请求至Servlet容器

2Servlet容器接收请求,解析,然后将请求发送给相应的Servlet处理

3Servlet执行,处理结果返回Servlet容器

4Servlet容器接收处理结果,处理结果返回给客户

 

从以上访问Servlet的过程,可以看出,Servlet容器的作用如下:

(1)接收请求:当客户请求来到时,Servlet容器负责接收请求

(2)管理与调用ServletServlet容器管理Servlet的加载、实例化、初始化、调用与垃圾回收,根据请求的Servlet地址,调用要访问的Servlet

(3)返回响应结果:将Servlet的执行结果返回给客户

 

Servlet运行在Servlet容器中,容器为Servlet提供运行时的平台支撑,于是,在Servlet中,只需要专注于业务逻辑功能实现,而无需考虑网络通讯、垃圾回收等功能,这些基本功能由Servlet容器提供。 

Servlet容器主要提供了如下功能:

1)基本通信支持:Servlet容器提供了与WEB服务器之间的通信方法,使Servlet可以与WEB服务器轻松对话,并借助WEB服务器与客户端浏览器之间的通信机制,使Servlet容器无需自己建立Socket服务、监听通信端口、创建数据流对象等;Servlet容器定义了与WEB服务器之间的通信协议,所以,在Servlet中,无需考虑WEB服务器(例如:Tomcat)和自己的功能代码之间的API接口,只需要考虑如何在Servlet中实现业务逻辑功能(例如:处理一个订单)。

2)管理Servlet生命周期:Servlet容器管理着Servlet的整个生命周期,负责查找、加载、实例化、初始化、调用Servlet方法,以及销毁,有了Servlet容器,就不需要考虑Servlet资源的管理。

3)支持多线程:Servlet容器会自动为它所接收的每一个客户请求创建一个新的Java线程,以处理该请求;对于每一个客户请求,Servlet服务方法执行结束,则Servlet容器就会结束立即这个线程。

4)声明方式实现安全:按照Servlet容器要求,使用web.xml部署描述文件或注解来配置和修改安全性,而不必将其硬编码写到Servlet类代码中。

5)支持JSP动态页面:Servlet容器负责将JSP页面翻译成Java Servlet代码,按Servlet来管理JSP页面的运行。

 

根据Servlet应用模式,Servlet最常用的模式是通过Servlet容器运行在WEB服务器中,以执行请求和响应,请求与响应的典型范例是用动态网页技术实现动态网页,或者作为前端页面与后台数据库/后台服务器程序之间的中间件,于是,Servlet容器需要与WEB服务器或应用服务器结合,才能为WEB应用程序的访问提供服务。

Servlet容器可以在WEB服务器内部实现,也可以作为WEB服务器的附加构件提供,还可以实现在有WEB使能的应用服务器上,为Servlet的访问提供运行支撑。

WEB服务器启动时,Servlet容器也会随之启动。

三、WEB服务器

WEB服务器也称WWW(WORLD WIDE WEB)服务器,是安装并运行着WEB服务器软件的计算机,主要用于提供网上信息访问服务。WEB服务器不仅能够存储信息,还能接收来自客户机WEB浏览器的资源请求,处理请求,并返回处理结果

常见的WEB服务器软件有WebLogicTomcatIIS等。

WEB服务器软件是指驻留在WEB服务器上的服务程序。当WEB浏览器(客户端)连接WEB服务器并请求资源时,服务器将接收并处理请求,并处理结果发送回浏览器,发送给浏览器的信息还有资源的大小、文件类型等,即:告诉客户端浏览器如何查看资源

WEB服务器与客户浏览器之间,通过HTTP超文本传输协议进行通信

 

客户端WEB浏览器访问WEB服务器上资源的过程大致可以分为四个步骤:创建连接、客户端请求、服务器应答关闭连接。

(1)创建连接:客户端WEB浏览器与WEB服务器之间通过Socket三次握手,建立TCP连接

(2)客户端请求:WEB浏览器TCP连接基础上,使用应用层HTTP协议向WEB服务器发送资源访问请求。

(3)服务器应答:WEB服务器接收到请求后调用资源,实施任务处理,然后使用HTTP协议把任务处理的结果发送回WEB浏览器,WEB浏览器负责显示响应结果

(4)关闭连接:WEB服务器应答完成后,WEB服务器主动断开与WEB浏览器之间TCP连接。

Servlet常常也可以作为WEB服务器上的应用资源,提供客户端访问。

Servlet作为一种可驻留在WEB服务器上运行的Java服务器程序,下图说明了ServletWEB应用程序中的位置。

 

WEB服务器要支持Servlet的运行,就需要与Servlet容器相结合,为客户端提供Servlet的访问服务。许多WEB服务器内含了Servlet容器,例如:TomcatJettyJBossWebLogic既是WEB服务器软件,也是Servlet容器,即:它们包含了Servlet容器。

四、Servlet容器与WEB服务器共同处理客户请求

当客户端通过WEB浏览器请求访问WEB服务器上的Servlet时,Servlet容器作为WEB服务器中的一个组件,需要与WEB服务器一起共同处理一个客户请求,处理过程如下:

(1)客户端WEB浏览器与WEB服务器之间通过Socket建立TCP连接,并使用HTTP协议向WEB服务器发送Servlet访问请求

(2)WEB服务器负责接收来自客户端浏览器的HTTP请求

(3)WEB服务器将接收到的请求,转发给Servlet容器

(4)如果客户端要访问的Servlet不在Servlet容器中,则检索Servlet,并加载到容器的地址空间中

(5)Servlet容器调用Servlet的构造器和初始化init()方法,创建Servlet实例,并进行初始化(实例化与初始化方法,仅在第一次加载Servlet时,调用一次,即:创建一个Servlet实例)

(6)Servlet容器调用Servletservice()方法处理HTTP请求,并将处理结果返回给WEB服务器,同时,将Servlet实例暂时保留在Servlet容器的地址空间中,可以继续响应客户端的HTTP请求

(7)WEB服务器将Servlet的处理结果发送回客户端浏览器

(8)WEB服务器完成响应主动断开与WEB浏览器之间TCP连接

      

五、使用Servlet的优点

1、运行效率高

ServletServlet容器中是单进程运行的(即:单例模式),即使多次访问同一个ServletServlet容器也只需在第一次访问时,加载一次Servlet实例到容器的地址空间中;对于以后的每次访问,Servlet容器会自动为它所接收的每个Servlet请求创建一个新线程处理请求,响应结束后,Servlet容器会立即结束线程。

只有在Servlet发生改变时,才会重新加载Servlet,而且加载一个修改后的Servlet无需重新启动服务器,以提高Servlet运行效率。


  

2、标准的API接口

SUN公司为Servlet的开发提供了一套标准的Servlet API,以保证Servlet开发的一致性,这一套标准API最大的优点是与网络协议无关,其次,可扩展性强,简单易用,可以通过继承机制,快速地增强功能。

Servlet API中,没有