当web服务器上的jsp页面第一次被请求执行时,jsp引擎先将jsp页面文件转义成一个servlet,而这个引擎本身也是一个servlet,对此过程的详细描述如下:
创新互联建站-专业网站定制、快速模板网站建设、高性价比通化网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式通化网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖通化地区。费用合理售后完善,10余年实体公司更值得信赖。
当web服务器上的jsp页面第一次被请求执行时,jsp引擎先将jsp页面文件转义成一个servlet,而这个引擎本身也是一个servlet,对此过程的详细描述如下:
1、jsp引擎先把jsp文件转换成一个java源文件,即servlet,在转换时如果发现jsp文件有任何语法错误,转换过程将终端,并分别在服务器端和客户端提示出错信息。
2、如果转换成功,jsp引擎用javac把该java源文件编译成相应的class文件。
3、创建一个该servlet的对象,该servlet的jsplnit()方法被执行,jsplnit()方法在servlet的生命周期中只被执行一次。
4、jspservice()方法被调用来处理客户端的请求。对每一个请求,jsp引擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该jsp文件,则jsp引擎会创建多个线程,每个客户端请求对应一个线程。以多线程方式执行可以大大降低对系统的资源需求,提高系统的并发量及响应时间。但也应该注意多线程的编程限制,由于该servlet适中驻于内存,所以响应是非常快的。
5、如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的servlet,将继续上述处理过程。
6、虽然jsp效率很高,但在第一次调用时由于需要转换和编译而又一些轻微的延迟。此外,在任何时候如果由于系统资源不足,jsp引擎将以某种不确定的方式将servlet从内存中移去。当这种情况发生时,jspdestroy()方法首先被调用。
7、然后servlet对象便被标记加入“垃圾收集”处理。可在jsplnit()中进行一些初始化工作,如建立与数据库的链接,或建立网络链接,从配置文件中取一些参数等,在jspdestroy()中释放相应的资源。