JSP运行原理:

1.当服务启动,第一次请求index.jsp时,index.jsp页面被翻译成index_jsp.java和index_jsp.class文件,被放在镜像服务器的work目录下

2.index_jsp.java继承了HttpJspBase,而HttpJspBase继承了HttpServlet,所以index_jsp.java是一个Servlet

3.每次请求index.jsp,就会调用index_jsp.java的_jspService()方法,该方法就是向浏览器写整个页面



4.然而每一个servlet都应该对应一个servlet-mapping,但是去项目的web.xml文件中查看并没有发现servlet的配置信息

再去Tomcat镜像服务器的web.xml文件中查看servlet的配置信息(注意:项目的web.xml文件相当于镜像服务器的web.xml文件的子类)。
可以发现镜像服务器的web.xml文件中的信息如下图


所有的以jsp,或者jspx结尾的请求,都会被交给JspServlet整个类进行处理。而这个类继承了HttpServlet
调用JspServlet这个类的service方法(),该方法就是去执行镜像服务器的对应的.class文件。
5.最后梳理一下整个流程

网友评论