Java Web 深入分析(6) Tomcat
2024-09-01 01:36:00
tomcat是什么:汤姆猫?Javaweb服务器?
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,由Apache、Sun 和其他一些公司及个人共同开发而成。由于有了Sun 的参与和支持,最新的Servlet 和JSP 规范总是能在Tomcat 中得到体现,Tomcat 5支持最新的Servlet 2.4 和JSP 2.0 规范。因为Tomcat 技术先进、性能稳定,而且免费,因而深受Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web 应用服务器。
Tomcat 结构:
Connector:
在学Java web基础的时候,提到过当从浏览器传过来http请求之后,web容器会创建一个request和response对象。在Tomcat中,负责该创建工作的是Connector组件。Connector连接器可以有一个或多个,默认情况下会开启两个HTTP协议和AJP协议。
Container:
Container容器有四个子容器:Engine、Host、Context和Wrapper,他们之间是父子包含关系。
通过下面过程在来熟悉这个tomcat内部构造,出来这些容器,tomcat框架架构里面用到了很多设计模式,例如责任链模式,观察者模式,命令模式等等。
Tomcat Server处理一个http请求的过程
假设来自客户的请求为:http://localhost:8080/test/test.jsp
- 请求被发送到本机端口8080,被在那里侦听的Coyote HTTP/1.1 Connector获得
- Connector把该请求交给它所在的Service的Engine来处理,并等待来自Engine的回应
- Engine获得请求localhost/wsota/wsota_index.jsp,匹配它所拥有的所有虚拟主机Host
- Engine匹配到名为localhost的Host(即使匹配不到也把请求交给该Host处理,因为该Host被定义为该Engine的默认主机)
- localhost Host获得请求/wsota/wsota_index.jsp,匹配它所拥有的所有Context
- Host匹配到路径为/wsota的Context(如果匹配不到就把该请求交给路径名为""的Context去处理)
- path="/wsota"的Context获得请求/wsota_index.jsp,在它的mapping table中寻找对应的servlet ,可以查看我的博文,servlet ->servlet如何工作【http://www.cnblogs.com/humi/p/8168665.html】
- Context匹配到URL PATTERN为*.jsp的servlet,对应于JspServlet类
- 构造HttpServletRequest对象和HttpServletResponse对象,作为参数调用JspServlet的doGet或doPost方法
10)Context把执行完了之后的HttpServletResponse对象返回给Host
11)Host把HttpServletResponse对象返回给Engine
12)Engine把HttpServletResponse对象返回给Connector
13)Connector把HttpServletResponse对象返回给客户browser
- 在context.xml中配置web应用,参加我的博客【http://www.cnblogs.com/humi/p/8368633.html】
其实图片中说的很清楚 ,给出配置例子:
<Context path="/PPPP" docBase="D:\test\html" reloadable="true"/>
最新文章
- PHP入门part4
- UVALive 4987---Evacuation Plan(区间DP)
- Chap2: question: 1 - 10
- 【转载】大数据量传输时配置WCF的注意事项
- Linux中安装和使用rz、sz命令
- 详解C# 迭代器[转]
- ntpdate公司测试
- javascript中 IE事件处理程序中try catch用法
- 验证身份证合法性的js
- Codeforces Round #254 (Div. 1)-A,B
- 复制(6)——分发者(Distributor)
- oracle_恢复流程图
- java设计模式之三单例模式(Singleton)
- 在Delphi下使用迅雷APlayer组件进行免注册开发
- centOS 6 服务管理与服务脚本
- junit搭配hamcrest使用
- Python之列表
- 前端 - jquery方式 / iframe +form 方式 上传文件
- Set集合中的treeSet问题:cannot be cast to java.lang.Comparable;
- maven的pom.xml文件标签含义
热门文章
- Locust - A modern load testing framework https://locust.io/
- python定义接口继承类
- Javescript——数据类型
- LeetCode_190. Reverse Bits
- 【Leetcode_easy】804. Unique Morse Code Words
- 【Leetcode_easy】706. Design HashMap
- Spring Aop(十六)——编程式的自定义Advisor
- 锚点/JQ:点击导航跳到网页中的指定位置
- 【VS开发】TCP服务端如何判断客户端断开连接
- 【ARM-Linux开发】使用QT和Gstreanmer 遇到的一些问题