目录结构
- bin:执行目录,sh时linux上的,bat时windows上的
- lib:依赖的jar包
- conf:
- catalina.plicy:权限相关perssiom,tomcat是跑在jvm上的,所以有些默认权限
- server.xml:server节点--->service------>Executor线程池,Connector连接器
- connector连接器里面使用线程池的话,connector里面的maxThread是无效的
- executor:maxThreads如果不设置的话,默认为200
- web.xml:serverlet的标准部署模式
- DefaultServerlet:默认的 加载静态文件,html,js,img等静态文件
- JspServlet:专门处理jsp
- mime-mapping:文件类型,其实就是Tomcat处理文件类型
- Logs:日志目录
- localhost-xxx.log
- catalina-xxx.log
三种部署方式
- 显示部署:
- server.xml的Host目录下面加入一个Contex(指定路径和文件地址)
- 在conf/catalina/loalhost创建xml(热部署),访问路径为文件名
- 隐式部署:放在webapps目录下面
Tomcat的架构
两大核心组件:
Connector组件:连接器主要负责tomcat于客户端的连接
Container组件:servlet容器
一个请求处理的流程
- 用户点击网页内容,请求被发送到本机的8080,被在那里监听的Coyote HTTP/1.1 Connector获得。
- Connector把请求交给它所在的service的engine来处理,并等待engine返回
- engine获取请求localhost/test/index.jsp,匹配所有的虚拟主机Host
- engine匹配到名为localhost的host(即使匹配不到也把请求交给该host处理,因为该host被定义为engine的默认主机),名为loscalhost的host获取请求test/index.jsp,匹配它所应有的context,host匹配到路径为/test的Context(即使匹配不到就把该请求交给路径名为“”的处理)
- path为/test的Context获取到index.jsp的请求,在他的mapping table寻找出对应的servlet,context匹配到URL PATTERN为*.jsp的servlet对于的JspServlet
- 构造HttpServletRequest和HttpServletResponse对象,作为参数调用JspServlet的doGet()或者doPost(),执行业务逻辑、
- Context把执行完的HttpServletResponse返回会Host
- Host把HttpServletResponse返回给Engine
- Engine吧HttpServletResponse返回给Connector
- Connector把HttpServletResponse对象返回给客户Browser。