library is a good example.
翻译的资料 JSP 技术简介及特点
在本节中简单介绍 JSP 的运行原理与优点。
在一个 JSP 文件第一次被请求时,JSP 引擎把该 JSP 文件转换成为一个 Servlet。而这个引擎本身也是一个 Servlet。JSP 的运行过程如下所示:
(1)JSP 引擎先把该 JSP 文件转换成一个 Java 源文件(Servlet),在转换 时如果发现 JSP 文件有任何语法错误,转换过程将中断,并向服务端和客户端输 出出错信息。
(2)如果转换成功,JSP 引擎用 javac 把该 Java 源文件编译成相应的 class 文件。
(3)创建一个该 Servlet(JSP 页面的转换结果)的实例,该 Servlet 的 jspInit()方法被执行,jspInit()方法在 Servlet 的生命周期中只被执行一次。
(4)jspService()方法被调用来处理客户端的请求。对每一个请求,JSP 引 擎创建一个新的线程来处理该请求。如果有多个客户端同时请求该 JSP 文件,则 JSP 引擎会创建多个线程。每个客户端请求对应一个线程。以多线程方式执行可 以大大降低对系统的资源需求,提高系统的并发量及响应时间。但不过也应该注 意多线程的编程限制,由于该 Servlet 始终驻于内存,所以响应是非常快的。
(5)如果.jsp 文件被修改了,服务器将根据设置决定是否对该文件重新编 译,如果需要重新编译,则将编译结果取代内存中的 Servlet,并继续上述处理 过程。
(6)虽然 JSP 效率很高,但在第一次调用时由于需要转换和编译而有一些轻 微的延 迟。此外,在任何时候如果由于系统资源不足的原因,JSP 引擎将以某 种不确定的方式将 Servlet 从内存中移去。当这种情况发生时 jspDestroy()方 法首先被调用。
(7)然后 Servlet 实例便被标记加入“垃圾收集”处理。可在 jspInit()中 进行一些初始化工作,如建立与数据库的连接,或建立网络连接,从配置文件中 取一些参数等,在 jspDestory()中释放相应的资源。
基于 Java 语言的 JSP 技术具有很多其他动态网页技术所没有的特点,具体 表现在如下方面:
1.简便性和有效性
JSP 动态网页的编写与一般的静态 HTML 的网页编写是十分相似的。只是在 原来的 HTML 网页中加入一些 JSP 专有的标签,或是一些脚本程序(此项不是必 需的)。这样,一个熟悉 HTML 网页编写的设计人员可以很容易进行 JSP 网页的开 发。而且开发人员完全可以不自己编写脚本程序,而只是通过 JSP 独有的标签使 用别人已写好的部件来实现动态网页的编写。这样,一个不熟悉脚本语言的网页 开发者,完全可以利用 JSP 做出漂亮的动态网页。而这在其他的动态网页开发中 是不可实现的。