在Tomcat中的conf/目录下存在一个web.xml文件,这是Tomcat中部署的所有应用公用的,在这个文件中有这么两段配置:

    1. <servlet>
    2. <servlet-name>jsp</servlet-name>
    3. <servlet-class>org.apache.jasper.servlet.JspServlet</servlet-class>
    4. <init-param>
    5. <param-name>fork</param-name>
    6. <param-value>false</param-value>
    7. </init-param>
    8. <init-param>
    9. <param-name>xpoweredBy</param-name>
    10. <param-value>false</param-value>
    11. </init-param>
    12. <load-on-startup>3</load-on-startup>
    13. </servlet>
    1. <servlet-mapping>
    2. <servlet-name>jsp</servlet-name>
    3. <url-pattern>*.jsp</url-pattern>
    4. <url-pattern>*.jspx</url-pattern>
    5. </servlet-mapping>

    所以,很明显了,当通过http访问某个应用的jsp文件时,统一的交给JspServlet来进行处理。所以我们可以来分析JspServlet的源码逻辑。

    首先,每个应用都有一个JspServlet,在初始化JspServlet时,会生成一个JspRuntimeContext