JSP运行原理:
1577256088(1).jpg
1.当服务启动,第一次请求index.jsp时,index.jsp页面被翻译成index_jsp.java和index_jsp.class文件,被放在镜像服务器的work目录下
1577256228(1).jpg
2.index_jsp.java继承了HttpJspBase,而HttpJspBase继承了HttpServlet,所以index_jsp.java是一个Servlet
1577256318(1).jpg
3.每次请求index.jsp,就会调用index_jsp.java的_jspService()方法,该方法就是向浏览器写整个页面
1577256610(1).jpg
![1577256610(1).jpg](https://img.haomeiwen.com/i18688340/dab6afb42b6a9741.jpg?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)
1577256592(1).jpg
4.然而每一个servlet都应该对应一个servlet-mapping,但是去项目的web.xml文件中查看并没有发现servlet的配置信息
1577256808(1).jpg
再去Tomcat镜像服务器的web.xml文件中查看servlet的配置信息(注意:项目的web.xml文件相当于镜像服务器的web.xml文件的子类)。
可以发现镜像服务器的web.xml文件中的信息如下图
1577256985(1).jpg 1577257003(1).jpg
所有的以jsp,或者jspx结尾的请求,都会被交给JspServlet整个类进行处理。而这个类继承了HttpServlet
调用JspServlet这个类的service方法(),该方法就是去执行镜像服务器的对应的.class文件。
5.最后梳理一下整个流程
1577257688(1).jpg
网友评论