展开全部
tomcat访问所有的资源,都是用Servlet来实现的。
在Tomcat看来,资源分32313133353236313431303231363533e4b893e5b19e313333633764633种
1. 静态资源,如css,html,js,jpg,png等
2. Servlet
3. JSP
对于静态资源,Tomcat最后会交由一个叫做DefaultServlet的类来处理
对于Servlet ,Tomcat最后会交由一个叫做 InvokerServlet的类来处理
对于JSP,Tomcat最后会交由一个叫做JspServlet的类来处理
所以Tomcat又叫Servlet容器嘛,什么都交给Servlet来处理。
那么什么时候调用哪个Servlet呢? 有一个类叫做org.apache.tomcat.util.http.mapper.Mapper,它一共进行了7个大的规则判断,第7个,就是判断是否是该用DefaultServlet。
简单地说。。。先看是不是servlet,然后看是不是jsp,如果都不是,那么就是你DefaultServlet的活儿了。
到了DefaultServlet之后,就是一个普通的HttpServlet了,doPost方法会交由doGet处理:
doGet又交由一个叫做 serveResource的方法处理
在serveResource方法里又瞎搞八搞了许多事情,最后在一个叫做copy()方法里,把静态资源对应的输入流 读取出来,扔到了输出流里,这样你的浏览器就看到数据了。