图11-4 JSP的运行事理

  JSP的运行过程详细如下。

  (1)客户端发出要求,要求访问JSP文件。

jsp生成htmlJSP运行道理及运行进程 NoSQL

  (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格式的相应信息发送回客户端。