Tomcat和spring MVC是如何完成一次Http请求的?

回答这个问题之前,先要明确tomcat和spring mvc各自的指责是什么
tomcat:作为一个servlet容器,接受和返回http请求。
spring mvc:分发请求,执行处理器,返回数据,渲染视图。

tomcat和spring mvc的连接点在于servlet:
步骤如下:
1、请求来了以后,endpoint先接受到请求,使用socked套接字,走的是TCP/IP协议。
2、将连接交给线程池Executor处理,开始执行请求响应任务。
3、processor组件读取消息报文,解析请求行,请求体,请求头,封装成request对象(通过Http协议)。
4、Mapper对象根据请求行的url和请求头的host在Web.xml中匹配到哪个Host容器,Context容器,Wrapper容器来处理请求。
5、coyoteAdapter组件把connector和容器的Engine组件联系起来,并将request请求封装成servletRequest请求。调用Engine的pipeline
6、pipeline开始处理请求,然后交给Host的pipeline,这样一直调用(责任链)
7、调用到最后是wrapper的pipeline,然后创建一个ApplicationFilterChain,初始化所有的filter,创建Servlet对象。这个servlet对象就是spring mvc中的DispatcherServlet。这就和spring mvc对接上了
8、调用service方法,里面还有个doDispatcher()方法。接下来就进入了spring MVC的流程了
步骤5之前都是Tomcat中连接器做的事情。HttpServletRequest是进入容器以后创建的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值