zoukankan      html  css  js  c++  java
  • 关于Tomcat服务器中的协议及请求过程

    关于Tomcat服务器中采用的协议:在Tomcat的server.xml文件中可以找到如下几个Connector

    1 <!-- 1. HTTP -->
    2 <Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />
    3 
    4 <!-- 2. HTTPS -->
    5 <Connector port="8443" protocol="org.apache.coyote.http11.Http11NioProtocol"
    6            maxThreads="150" SSLEnabled="true" scheme="https" secure="true"
    7            clientAuth="false" sslProtocol="TLS" />
    8 <!-- 3. AJP -->
    9 <Connector port="8009" protocol="AJP/1.3" redirectPort="8443" />

    a)HTTP  Connector

      此连接器支持HTTP/1.1协议

      拥有这个连接器,Tomcat才能成为一个Web服务器,但还额外可处理 servlet 和 jsp

      每个监听器监听一个你电脑上的TCP端口(而没有UDP端口)

      一个Service可以配置多个HTTP连接器(配置不同端口即可),每个连接器都可以将请求转发到与他们同级的一个Engine上让它处理,并生成相应响应

    b)AJP Connector

      AJP连接器可以通过AJP协议和一个Web容器进行交互

      当你想让Apache 和 Tomcat结合并且你想让Apache处理静态页面的内容的时候用AJP,或者你想利用Apache的SSL处理能力时

      特殊于HTTP  Connector,AJP还可以与engine元素上的 jvm Route结合来使用负载均衡

    c)HTTPS Connector

    ...

    Apache和Tomcat结合的时候:

    1. Apache会拦截所有请求,将servlet和JSP(.jsp结尾)请求通过AJP交给Tomcat处理,然后再把结果拿到Apache然后返回

    2. 将静态资源的访问,(类似.html/.css/.jpg等之类的结尾)自己直接处理不交给tomcat,直接返回

    3. Apache和Tomcat结合之后:Tomcat的HTTP Connector永远不会被用到了,可以没有

    注:Tomcat 处理请求的过程

    1、用户点击网页内容,请求被发送到本机端口8080,被在那里监听的Coyote HTTP/1.1 Connector获得。

    2、Connector把该请求交给它所在的Service的Engine来处理,并等待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。

    参考博客:http://www.cnblogs.com/hggen/p/6264475.html

         http://blog.csdn.net/u010297957/article/details/50782212 

  • 相关阅读:
    004-Shell 基本运算符、算术运算符、关系运算符、布尔运算符、辑运算符、字符串运算符、文件测试运算符
    003-shell 传递参数
    002-shell变量定义、使用、字符串替换,分隔,搜索、数组、注释
    【Java】验证码识别解决方案
    bufferedimage 转换成 inputstream并保存文件
    遍历json对象---Java
    【网络爬虫】Httpclient4.X中使用HTTPS的方法采集12306网站
    httpclient获取cookies
    驾考宝典排行榜之爬虫接口解决方案
    java去除字符串中的空格、回车、换行符、制表符
  • 原文地址:https://www.cnblogs.com/xuzekun/p/7593386.html
Copyright © 2011-2022 走看看