
2.3 JSP执行过程
2.3.1 JSP执行过程分析
JSP执行过程分析
当服务器上的一个JSP页面被第一次请求执行时,服务器上的JSP引擎会先将JSP页面文件转译成一个.java文件,即servlet,并编译这个Java文件,生成.class的字节码文件,然后执行字节码文件响应客户端的请求。而当这个JSP页面被再次请求时,JSP引擎将直接执行字节码文件来响应客户。执行过程如图2-13所示。
该执行过程可以总结为以下4步。
(1)客户端发出Request请求。

图2-13 JSP执行过程图
(2)JSP Container 将JSP转译成Servlet的源代码。
(3)将产生的Servlet源代码经过编译后,加载到内存执行。
(4)把结果Response(响应)至客户端。
在执行JSP网页时,通常可以分为两个时期:转译时期(Translation Time)和请求时期(Request Time)。
① 转译时期:JSP网页转译成Servlet类。
② 请求时期:Servlet类执行后,响应结果至客户端。
其中,系统在转译期间做了两件事情:将JSP网页转译为Servlet源代码*.java(转译);将Servlet源代码*.java编译成字节码文件*.class(编译)。
2.3.2 JSP执行过程转译文件
JSP执行过程转译文件
本小节以客户端请求jspdempro项目中一个根目录下的welcome.jsp为例,解释JSP执行过程中生成的两个文件。
当客户端发出请求 http://localhost:8080/jspdemopro/welcome.jsp 后,可以在 Tomcat 服务器目录\work\Catalina\localhost\jspdemopro\org\apache\jsp 下发现多了两个文件:welcome_jsp.java 和 welcome_jsp.class,如图2-14所示。

图2-14 转译时期生成的两个文件
打开welcome_jsp.java,可以看到其部分源代码,如图2-15所示。
welcome.jsp的源代码参见2.2.3节中的welcome.jsp页面源代码。

图2-15 welcome_jsp.java源代码