当客户端浏览器向服务器发出访问一个JSP页面的请求时,服务器根据该请求加载相应的JSP页面,并对该页面进行编译,然后执行。JSP页面的执行过程如下图所示:
- 客户端通过浏览器向服务器发出请求,在该请求中包含了请求的资源的路径,这样当服务器接收到该请求后就可以知道被请求的内容。
- 服务器根据接收到的客户端的请求来加载相应的JSP文件。
- Web服务器中的JSP引擎会将被加载的JSP文件转化为Servlet。
- JSP引擎将生成的Servlet代码编译成Class文件。
- 服务器执行这个Class文件。
- 最后服务器将执行结果发送给浏览器进行显示。
从上面的解释中可以看到,JSP文件被JSP引擎转换后,又被编译成了Class文件,最终由服务器通过执行这个Class文件来对客户端的请求进行响应。其中第三步和第四步构成了JSP处理过程中的翻译阶段,而第五步则为请求处理阶段。
但并不是每次请求都需要重复进行这样的处理。当服务器第一次接收到对某个页面的请求时,JSP引擎就开始按照上述的处理过程来将被请求的JSP文件编译成Class文件。当再次对该页面进行请求时,如果该页面没有任何改动,服务器就会直接调用对应的Class文件来执行。因此当某个JSP页面第一次被请求时,会有一些延迟,而再次访问时会感觉速度快了很多。如果被请求的页面经过了修改,那么服务器会重新编译这个文件,然后再执行。