logo资料库

jsp工作原理.docx

第1页 / 共2页
第2页 / 共2页
资料共2页,全文预览结束
JSP的工作原理  
JSP 的工作原理 JSP 页面工作原理图 当一个 JSP 文件第一次被请求的时候,JSP 引擎(本身也是一个 Servlet)首先会把这个 JSP 文件转换 成一个 Java 源文件。在转换过程中如果发现 JSP 文件有语法错误,转换过程将中断,并向服务端和客户 端输出出错信息;如果转换成功,JSP 引擎用 javac 把该 Java 源文件编译成相应的.class 文件并将该.class 文件加载到内存中。 其次创建一个该 Servlet 的实例,并执行该实例的 jspInit()方法(jspInit()方法在 Servlet 的生命周期中 只被执行一次)。 然后创建并启动一个新的线程,新线程调用实例的 jspService()方法。(对于每一个请求,JSP 引擎会 创建一个新的线程来处理该请求。如果有多个客户端同时请求该 JSP 文件,则 JSP 引擎会创建多个线程, 每个客户端请求对应一个线程)。 浏览器在调用 JSP 文件时,Servlet 容器会把浏览器的请求和对浏览器的回应封装成 HttpServletRequest 和 HttpServletResponse 对象,同时调用对应的 Servlet 实例中的 jspService()方法, 把这两个对象作为参数传递到 jspService()方法中。 jspService()方法执行后会将 HTML 内容返回给客户端。 如果 JSP 文件被修改了,服务器将根据设置决定是否对该文件进行重新编译。如果需要重新编译, 则将编译结果取代内存中的 Servlet,并继续上述处理过程。 如果在任何时候由于系统资源不足,JSP 引 擎将以某种不确定的方式将 Servlet 从内存中移去。当这种情况发生时,jspDestroy()方法首先被调用, 然 后 Servlet 实例便被标记加入“垃圾收集”处理。 补充: 以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间,但应该注意多线程 的编程限制,由于该 Servlet 始终驻于内存,所以响应是非常快的。 虽然 JSP 效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延迟。
在 jspInit()中可以进行一些初始化工作,如建立与数据库的连接、建立网络连接、从配置文件中获取一 些参数等,而在 jspDestory()中释放相应的资源。 jspInit()及 jspDestory()格式如下: public void jspInit() { } System.out.println("jspinit"); public void jspDestory() { } System.out.println("jspDestory");
分享到:
收藏