tomcat对静态资源,servlet和jsp是如何访问的

tomcat访问所有的资源,都是用Servlet来实现的。

在Tomcat看来,资源分3种

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的活儿了。

tomcat对静态资源,servlet和jsp是如何访问的_第1张图片

到了DefaultServlet之后,就是一个普通的HttpServlet了,doPost方法会交由doGet处理:

tomcat对静态资源,servlet和jsp是如何访问的_第2张图片

doGet又交由一个叫做 serveResource的方法处理

tomcat对静态资源,servlet和jsp是如何访问的_第3张图片

在serveResource方法里又瞎搞八搞了许多事情,最后在一个叫做copy()方法里,把静态资源对应的输入流 读取出来,扔到了输出流里,这样你的浏览器就看到数据了。

tomcat对静态资源,servlet和jsp是如何访问的_第4张图片

你可能感兴趣的:(tomcat)