图11-4 JSP的运行事理
JSP的运行过程详细如下。
(1)客户端发出要求,要求访问JSP文件。
(2)JSP容器先将JSP文件转换成一个Java源文件(Java Servlet源程序),在转换过程中,如果创造JSP文件中存在任何语法缺点,则中断转换过程,并向做事端和客户端返回出错信息。
(3)如果转换成功,则JSP容器会将天生的Java源文件编译成相应的字节码文件.class。该class文件便是一个Servlet,Servlet容器会像处理其他Servlet一样处理它。
(4)由Servlet容器加载转换后的Servlet类(class文件)创建一个该Servlet(JSP页面的转换结果)的实例,并实行Servlet的jspInit()方法。jsInit()方法在Servlet的全体生命周期中只会实行一次。
(5)实行jspService()方法处理客户真个要求。对付每一个要求,JSP容器都会创建一个新的线程处理它。如果多个客户端同时要求该JSP文件,则JSP容器会创建多个线程,使每一个客户端要求都对应一个线程。
(6)如果JSP文件被修正了,则做事器将根据设置决定是否对该文件重新进行编译,如果须要重新编译,则利用重新编译后的结果取代内存中的Servlet,并连续上述处理过程。须要把稳的是,虽然JSP效率很高,但在第一次调用时每每由于须要转换和编译,以是会产生一些轻微的延迟。
(7)如果系统涌现资源不敷等问题,JSP容器可能会以某种不愿定的办法将Servlet从内存中移除,发生这种情形的时候,首先会调用jspDestroy()方法,然后Servlet实例会被作为“垃圾”进行处理。
(8)当要求处理完成后,相应工具由JSP容器吸收,并将HTML格式的相应信息发送回客户端。