Tomcat处理请求

Tomcat Server处理一个http请求的过程

假设来自客户的请求为:

http://localhost:8080/zpf/index.jsp

1) 请求被发送到本机端口8080,被在那里侦听的CoyoteHTTP/1.1 Connector获得

2)Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应

3) Engine获得请求localhost/zpf/index.jsp,匹配它所拥有的所有虚拟主机Host

4) Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)

5)localhost Host获得请求/zpf/index.jsp,匹配它所拥有的所有Context

6) Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为”"的Context去处理)

7) path=”/zpf”的Context获得请求/index.jsp,在它的mappingtable中寻找对应的servlet

8)Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类

9) 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法

10)Context把执行完了之后的HttpServletResponse对象返回给Host

11)Host把HttpServletResponse对象返回给Engine

12)Engine把HttpServletResponse对象返回给Connector

13)Connector把HttpServletResponse对象返回给客户browser

时间: 2024-10-06 19:32:47

Tomcat处理请求的相关文章

关于Tomcat上请求的编解码问题

最近翻阅<深入分析 Java Web 技术内幕>(作者:许令波),关于Tomcat上Web请求的编解码问题,少了一个小点,可能影响了部分读者的理解,我特意查证了一下,特总结如下: 1. 请求的PathInfo部分用Tomcat的Connector元素的URIEncoding属性指定的编码来解码. 具体使用可参考:https://tomcat.apache.org/tomcat-8.5-doc/config/http.html. 2. 第二先说请求体(POST正文)的解析,Tomcat按下次顺序

tomcat对请求路径的匹配过程

1.匹配服务 如果有两个应用,一个应用只能通过80端口访问,另一个应用只能通过8080端口访问,这种情况下,可以分开两个服务,然后分别创建80端口和8080端口的连接器. 2.匹配主机 一个服务下配置一个引擎,一个引擎下可以配置多个主机,通过请求路径的域名匹配主机名称,如果未匹到,则使用默认的主机,默认主机由引擎的属性defaultHost配置. 3.匹配上下文(应用) 一个主机下可以配置多个上下文,通过URI匹配上下文的路径,如果未匹配到,则匹配失败. 4.选用版本 其实一个主机下可以配置相同

servlet图解。1。。tomcat处理请求过程、servlet的生命周期

Tomcat的组成部分 Tomcat容器的处理请求过程 servlet的生命周期 HttpServletRequest HttpServletResponse

How Tomcat works — 六、tomcat处理请求

tomcat已经启动完成了,那么是怎么处理请求的呢?怎么到了我们所写的servlet的呢? 目录 Http11ConnectionHandler Http11Processor CoyoteAdapter StandardEngineValve StandardWrapperValve 总结 Http11ConnectionHandler 在tomcat 启动之后会使用socket.accept接收请求,接收到之后会调用自己的processSocket来处理请求,在该方法中启动一个SocketP

tomcat get请求中文乱码

tomcat7中,保证get数据采用UTF8编码,在server.xml中进行了如下设置: 加:URIEncoding="UTF-8" <Connector port="8080" maxThreads="150"minSpareThreads="25"maxSpareThreads="75" enableLookups="false"redirectPort="8443

从零开始写一个Tomcat(叁)--请求解析

挖坑挖了这么长时间也该继续填坑了,上文书讲到从零开始写一个Tomcat(贰)--建立动态服务器,讲了如何让服务器解析请求,分离servlet请求和静态资源请求,读取静态资源文件输出或是通过URLClassLoader找到我们请求的servlet,反射生成对应的实例,调用其service方法,传递初级解析的request和response,完成请求. 这很tomcat,but too simple 阅读本文,你将了解 连接器(connector),处理器(processor)逻辑分离 如何高效的解

nginx+tomcat重复请求

好久不写技术文章了,越发的觉得单纯的讲技术没啥意思.怪不得知乎越来越火,因为大家都喜欢看故事,不喜欢硬生生的技术文章.笔者今天就来就给大家讲故事:) 最近网站压力突然增大,把带宽都占满了,访问网页发现非常的慢,打开页面的速度也奇慢大概要十几秒.这种情况还是第一次遇到,感觉不是被攻击了就是被攻击了!下面是网站的流量截图,一共1M的带宽在15点左右的时候瞬间慢了,然后就是持续的在峰值左右徘徊. 当时的想法是莫非网站的访问量到达了一定程度要增加带宽了?可是通过看网站的统计数据,访问的人数并没有明显的增

一次线上tomcat应用请求阻塞的排查经过

今天早上,收到一个报警,有个服务器的http往返时延飙升,同时曝出大量404,很是折腾了一番,特记录下思考和排查经过. 1.这是单纯的时延增大,还是有什么其他情况还未掌握? 因为不知道是只有时延变大而已,还是同时有别的情况,第一反应是先看日志有没有异常. 看了一下,一片风平浪静,既是好消息也是坏消息.好消息是核心业务还在,不然一定会打日志,坏消息是日志提供不了任何信息.当然这也说明了我们的日志肯定有不到位的地方. 2.换个思路,日志风平浪静,是否只是服务器启动了什么任务,占用了大量cpu/IO等

Nginx与Tomcat实现请求动态数据与请求静态资源的分离

上篇博客说明了Nginx在应用架构中的作用,以及负载均衡的思路.这篇实践一下其中的访问静态资源与访问动态资源的操作. 一.认识访问静态资源与访问动态资源的区别 静态资源:指存储在硬盘内的数据,固定的数据,不需要计算的数据. 如:图片.字体.js文件.css文件等等.在用户访问静态资源时,服务器会直接将这些资源返回到用户的计算机内. 动态资源:指需要服务器根据用户的操作所返回的数据,以及存储在数据库的数据,经过一系列逻辑计算后返回的数据. 如:请求明天的天气信息数据.请求查看账户余额. 二.请求动