基本概念:
tomcat是一个轻量级web应用服务器,servlet的容器,底层是Socket的一个程序
目的:
学过html,css之后,我们会知道自己写的页面只能自己访问,别人不能远程访问,Tomcat就是提供能够让别人访问自己写的页面的一个程序
适用场景:
中小型系统和并发访问用户不是很多的场合
目录结构:
运行流程:
-
图解简易版:
- 具体版:
1.通过脚本startup,调用java命令,参数时tomcat自己的main主函数
2.在main中处理逻辑,包括:解析webapps下所有的项目(绑定项目和项目url)
(1)通过web.xml找到servlet配置信息,通过反射初始化servlet(有了new出来的servlet对象-->指项目中实现HServlet的相关接口的类对象
(a)检查web.xml中是否有metadata-complete=‘true’,默认是false
(b)如果=false,还要进一步处理:target/artifactId-version/WEB-INF/calsses 中的所有类搜索servlet相关注解
(c)通过反射实例化这些servlet相关的
(2)调用 servlet 的 init() 进行初始化操作(ps:servlet生命周期中只初始化一次)
(3)绑定对应项目的servlet和url(ps:url会在项目中的web.xml中设置)
3.接收http请求,就可以根据请求url找到对应的servlet
(1)请求url:http://ip:port/项目名/服务路径
(2)tomcat接收请求,根据项目名找到项目,
(3)根据服务路径找到servlet(根据之前建立的映射关系)
(4)调用servlet.service() 处理请求 (ps:tomcat是基于线程池处理多任务的方式,因此每次请求都要经过这个步骤:新建任务处理请求,不一定是新建线程,是否新建线程要根据线程池内部的上下文来决定)
本文参考资料