「这是我参与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通讯协议,返回给浏览器,浏览器解析并展示数据。
本文转载自: 掘金