【计算机专业文献翻译】JSP工作原理

  • 格式:doc
  • 大小:24.00 KB
  • 文档页数:2

一、JSP工作原理
在一个JSP文件第一次被请求时,JSP引擎把该JSP文件转换成为一个
servlet。

而这个引擎本身也是一个servlet,在JSWDK或WEBLOGIC中,它就是JspServlet。

JSP引擎先把该JSP文件转换成一个Java源文件,在转换时如果发现jsp文件有任何语法错误,转换过程将中断,并向服务端和客户端输出出错信息;如果转换成功, JSP引擎用javac把该Java源文件编译成相应的class文件。

然后创建一个该SERVLET的实例,该SERVLET的jspInit()方法被执行,jspInit()方法在servlet的生命周期中只被执行一次。

然后jspService()方法被调用来处理客户端的请求。

对每一个请求,JSP 引擎创建一个新的线程来处理该请求。

如果有多个客户端同时请求该JSP文件,则JSP引擎会创建多个线程。

每个客户端请求对应一个线程。

以多线程方式执行可大大降低对系统的资源需求,提高系统的并发量及响应时间.但应该注意多线程的编程限制,由于该servlet始终驻于内存,所以响应是非常快的。

如果.jsp文件被修改了,服务器将根据设置决定是否对该文件重新编译,如果需要重新编译,则将编译结果取代内存中的servlet,并继续上述处理过程。

虽然JSP效率很高,但在第一次调用时由于需要转换和编译而有一些轻微的延迟。

此外,如果在任何时候如果由于系统资源不足的原因,JSP引擎将以某种不确定的方式将servlet从内存中移去。

当这种情况发生时jspDestroy()方法首先被调用, 然后servlet实例便被标记加入"垃圾收集"处理。

jspInit()及jspDestory()格式如下:可在jspInit()中进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中取一些参数等,在jspDestory()中释放相应的资
二、服务端的输出缓冲区
缺省情况下:服务端要输出到客户端的内容,不直接写到客户端,而是先写到一个输出缓冲区中.只有在下面三中情况下,才会把该缓冲区的内容输出到客户端上:
三、服务端输出重定向
有以下3种方法可以做到输出重定向:
四、、JSP中正确应用类:
应该把类当成JA VA BEAN来用,不要在<% %> 中直接使用. 如下的代码(1)经过JSP引擎转化后会变
为代码(2):
从中可看出如果把一个类在JSP当成JA V A BEAN 使用,JSP会根据它的作用范围把它保存到相应的内部对象中.
如作用范围为request,则把它保存到request对象中.并且只在第一次调用(对象的值为null)它时进行实例化. 而如果在<% %>中直接创建该类的一个对象,则每次调用JSP时,都要重新创建该对象,会影响性能.
五、JSP的调试
JSP的调试比较麻烦,特别是当bean是在一个session中存在时,更加困难。

得从好几个页面开始往里面走才行。

通常是用out.println()或System.out.print()来打一大堆的信息来查问题。

如果是用jbuilder做开发,它能直接调试JSP.不过更重要的是知道错误产生的原因及解决方法。

下面对一些JSP编程常见错误进行分析。