目录
什么是Servlet?
Servlet是由SUM公司提供的动态web资源技术,本质上就是一段java程序,是在服务器上运行的,但是这段java程序无法独立运行,必须放在Servlet容器里(例如:Tomcat服务器),由容器调用才能执行。
Servlet的作用?
Servlet的作用是处理请求,服务器会将接收到的请求交给Servlet处理,然后Servlet接受请求,最后将结果响应给浏览器。
Servlet生命周期?
Servlet在第一次被访问时创建Servlet实例,创建之后服务器会立即调用init方法进行初始化的操作,之后Servlet实例会一直驻留在服务器的内存中,为后续的请求服务。只要有请求来访问这个Servlet,服务器就会调用service方法来处理请求;直到服务器关闭,或者WEB应用被移出容器,随着WEB应用的销毁,Servlet实例也会跟着销毁,在销毁之前服务器会调用destroy方法进行善后的处理。
Servlet调用过程?
Servlet处理的这个过程就是Servlet的调用过程,大概的调用过程如下图所示:
解释上图的步骤:
(1)浏览器向服务器发送请求,服务器调用一个servlet来处理
(2)Servlet负责对请求进行处理,处理的过程中可能需要连接并访问数据库,最终得出一个结果.
(3)通常servlet不直接将结果响应给浏览器,而是由JSP或者html负责展示。
(4)最终要响应的结果是由服务器负责响应给浏览器
接下来是详细的Servlet调用过程:
(1)在浏览器输入地址,浏览器先去查找hosts文件,将主机名翻译为ip地址,如果找不到就再去查询dns服务器将主机名翻译成ip地址。
(2)浏览器根据ip地址和端口号访问服务器,组织http请求信息发送给服务器。
(3)服务器收到请求后首先根据Host请求头判断当前访问的是哪台虚拟主机。
(4)服务器根据http请求头中的请求URI判断当前访问的是哪个web应用。
(5)服务器根据http请求头中的请求URI判断当前访问的是web应用中的哪个web资源。
(6)检查web应用的web.xml文件,如果根据路径找到具体的servlet处理类的全路径名交给该servlet处理,如果找不到就交给缺省servlet处理。
(7)这个过程中浏览器只知道自己发出来http请求,不久就收到了http响应,浏览器不知道也不关心服务器内部是如何处理的。浏览器和服务器之间的关系是非常单纯的,只有HTTP协议。
(8)解析请求、封装Request,Response对象、创建Servlet、调用Service方法都是服务器自动进行的,开发人员只需要写好Servlet配置进容器中即可,无需操心具体的底层实现。
需要了解Request,Response的请移步写文章-CSDN博客https://mp.csdn.net/mp_blog/creation/editor/123375697
下面用一个例子来一步一步展示Servlet调用过程,如下步骤:
(1)在浏览器输入地址:http://localhost/Hello/HelloServlet
然后浏览器先去查找hosts文件,将主机名翻译为ip地址,如果找不到就再去查询dns服务器将主机名翻译成ip地址。
(2)浏览器根据ip地址和端口号访问服务器,组织http请求信息发送给服务器。
(3)服务器收到请求后首先根据Host请求头判断当前访问的是哪台虚拟主机。
(4)服务器根据http请求头中的请求URI判断当前访问的是哪个web应用。
(5)服务器根据http请求头中的请求URI判断当前访问的是web应用中的哪个web资源。
(6)检查web应用的web.xml文件,如果根据路径找到具体的servlet处理类的全路径名交给该servlet处理,如果找不到就交给缺省servlet处理。这个过程中浏览器只知道自己发出来http请求,不久就收到了http响应,浏览器不知道也不关心服务器内部是如何处理的。浏览器和服务器之间的关系是非常单纯的,只有HTTP协议。
(8)解析请求、封装RequestResponse对象、创建Servlet、调用Service方法都是服务器自动进行的,开发人员只需要写好Servlet配置进容器中即可,无需操心具体的底层实现。