Tomcat之JSP运行原理之小试牛刀

时间:2023-03-09 13:42:37
Tomcat之JSP运行原理之小试牛刀

最近空闲看了下JSP/Servlet,以前只知道用JSP,但是对其运行原理知之甚少,今在此做些笔记,以备查阅。

首先简要描述下其运行过程,然后结合Tomcat源码作简要分析。

JSP运行过程:

第一步:将JSP文件翻译成servlet源代码;

第二步:将servlet源代码编译成字节码文件;

第三步:载入字节码并实例化和初始化;

第四步:调用service方法提供服务;

源码简要分析如下:

1、源码中涉及到的几个重要文件

JspServlet.java、JspServletWrap.java、JspRuntimeContext.java、Compiler.java、JDTCompiler.java(AntCompiler.java)

2、代码详细分析

JspServlet中涉及两重要方法:service方法和serviceJspFile,service方法主要用于获取请求JSP资源路径,serviceJspFile主要用于构建JspServletWrap。

JspRuntimeContext主要提供JspServletWrap的容器(用的是HashMap集合)。

Compiler主要用来翻译JSP文件和将其编译成字节码,具体的字节码产生实现由其子类实现(用到模版方法设计模式)。

JDTCompiler(AntCompiler)主要用来产生字节码文件。

JspServletWrap主要用来实例化Servlet并调用init进行初始化处理,并且调用servlet的service方法进行处理请求。

具体实现细节等进一步探究,今天就先写到这,本人水平有限,如有不妥望指点!