tomcat 处理http机制

servlet2.5 & servlet3.0 处理上的差别 待续...

1、tomcat概念

TomcatWeb应用服务器,可以解析http协议,当收到HTTP请求(request),返回HTTP响应(response)。可以直接响应一个静态页面(apache实现),或者动态响应比如servlet。最后通常以HTML格式返回给浏览器。注:apache+tomcat 结合主要是apache处理静态响应 且比tomcat高效,动态响应apache交给tomcat来做。

2、tomcat结构组件




Tomcat主要包括俩大组件:connector、container

一个Tomcat中只有一个Server(shutdown端口、掌握整个服务生死大权),一个Server可以包含多个Service,一个Service只有一个Container,但是可以有多个Connectors,这是因为一个服务可以有多个连接,如同时提供Http和Https链接,也可以提供向相同协议不同端口的连接,示意图如下(Engine、Host、Context下边会说到):

2.1、connector 

监听浏览器tcp请求----->封装Request、Response---->起新线程把request、Response交给engine----engine处理request返回response给connector---->返回浏览器  servelt3.0?

connector常用监听端口:HTTP请求、其他WebServer请求、redirectPort(http发来的请求,资源要求必须https访问,跳转ssl端口)

2.2 container


Container

Container是容器的父接口,该容器的设计用的是典型的责任链的设计模式,它由四个自容器组件构成,分别是Engine、Host、Context、Wrapper。

engine(servlet引擎)------>n个host---->n个context(1个application)------>n个servlet(wrapper)

Engine

Engine 容器比较简单,它只定义了一些基本的关联关系 Host 容器

Host

一个Host代表一个虚拟主机1、运行多个应用(context)。2、配置主机信息

Context
Context 最重要的功能就是管理它里面的 Servlet 实例,context通过 request 来找到servelt
Wrapper

Wrapper 代表一个 Servlet,它负责管理一个 Servlet,包括的 Servlet 的装载、初始化、执行以及资源回收。


3、tomcat处理http流程

browser http(host:port/path/url)--->connector http监听端口监听到http请求,封装request、response---->request、response交给engine

---->engine根据路径host匹配对应host---->host根据路径path匹配对应context----->context根据url在conetxt的mapping table中匹配到servlet------->执行servlet方法---返回response给host--->返回response给engine---->返回response给connector---->返回response给browser




1.用户在浏览器中输入网址localhost:8080/test/index.jsp,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得;

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

3.Engine获得请求localhost/test/index.jsp,匹配所有的虚拟主机Host;

4.Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机),名为localhost的Host获得请求/test/index.jsp,匹配它所拥有的所有Context。Host匹配到路径为/test的Context(如果匹配不到就把该请求交给路径名为“ ”的Context去处理);

5.path=“/test”的Context获得请求/index.jsp,在它的mapping table中寻找出对应的Servlet。Context匹配到URL Pattern为*.jsp的Servlet,对应于JspServlet类;

6.构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet()或doPost(),执行业务逻辑、数据存储等;

7.Context把执行完之后的HttpServletResponse对象返回给Host;

8.Host把HttpServletResponse对象返回给Engine;

9.Engine把HttpServletResponse对象返回Connector;

10.Connector把HttpServletResponse对象返回给客户Browser。









  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值