JavaWeb——通俗易懂的servlet工作原理分析

679 阅读2分钟

「这是我参与11月更文挑战的第28天,活动详情查看:2021最后一次更文挑战

前景知识

Servlet容器,web容器

  • Servlet容器也叫做Servlet引擎,是Web服务器或应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,Tomcat是一个免费的开放源代码的Servlet容器。

  • web容器是一种服务程序,在web服务器一个端口就有一个提供相应服务的程序,而这个程序就是处理从客户端发出的请求,如JAVA中的Tomcat容器,ASP的IIS或PWS都是这样的容器。一个服务器可以有多个容器。

Servlet容器和Web容器的区别:

  • Sevrlet容器是用来管理servlet的生命周期,
  • web容器是用来管理和部署Web应用的。
  • ==Tomcat就是一个开源的Servlet容器,也是一个web容器==

工作原理

在这里插入图片描述

1.启动Tomcat,此时Tomcat作为Servlet容器,会==创建并初始化==Servlet,每个 Servlet 只被初始化一次

2.浏览器向Web容器(Tomcat)发送HTTP请求

3.如果Http请求是==首次==通过Web服务器(Tomcat)访问Servlet,将会把我们编写的实现了servlet接口的类由java文件编译为class文件。(所以如果你的web应用程序非常庞大,应用了非常多的Servlet,第一次运行会非常慢,后面就会越来越快)

4.当访问到达时,Servlet容器创建HttpServletRequest和HttpServletResponse对象,并且将请求数据放入HttpServletRequest中

  • 请求格式:请求行(request line)、请求头部(header)、空行和请求数据
  • 响应格式:状态行、消息报头、空行和响应正文。

5.Servlet容器(Tomcat)根据传递的url通过匹配web.xml中配置的Servlet路径,找到对应的Servlet实现类,传递请求和响应对象

6.请求和响应对象调用 service(ServletRequest req, ServletResponse res)方法

7.请求对象里的数据会进入我们重新实现的service()方法里,请求经过实现后变成响应交给响应对象,然后返回给Servlet容器(Tomcat)

  • service(ServletRequest req, ServletResponse res)里具体的方法是由我们的实现类来写的
  • 我们编写的实现类重写这些方法是为了:
    • 接收并处理请求
    • 给出响应的信息

8.Servlet容器(Tomcat)解析响应数据,根据HTTP通讯协议,返回给浏览器,浏览器解析并展示数据