服务器需要一个JSP容器来处理JSP页面,JSP容器负责解释对jsp页面的请求,为了处理页面中所有的JSP元素,容器首先把JSP页面转化成SERVLET【称为JSP页面实现类(JSP Page implementation class)】,这种转换是非常直接的,所有的模板文本都转换成与手工编码相似的println()语句,而且所有的JSP元素都被转换成实现响应动态行为的java代码,然后容器再编译servlet类.
将JSP页面转换成servlet并编译该servlet,这就是翻译阶段(translation phase)。当第一次受到对某个页面的请求时,jsp容器会自动开始对这个页面的翻译阶段,当然,翻译阶段需要一点时间来完成,所以用户会注意到当某个JSP页面被第一次请求时,会有一点延迟。翻译阶段也可以被显式地启动,这称为JSP页面的预编译(precomplilation)。对JSP页面进行预编译可以避免延迟问题。
JSP容器还负责调用JSP页面实现类(生成的Servlet),以处理每个请求并生成应答。这个阶段被称为“请求处理阶段(request processing phase)”。
只要JSP页面保持不变,任何后续的请求都会直接进入请求处理阶段(也就是说,容器仅执行类文件)。当JSP页面被修改后,后续请求将再次通过翻译阶段,然后再进入请求处理阶段。
JSP容器通常作为一种Servlet来实现的,并被配置位处理所有对页面的请求。事实上,servlet容器和JSP容器这两种容器通常都组合在一个名为web container的软件包中。
所有,通过这种方式,JSP页面实际上是编写servlet的另外一种方式,而你却不必是一名java编程高手,而且,除了编译阶段,JSP页面的处理过程与常见的servlet完全相同:载入一次多次重复执行,知道服务器关闭为止。作为一种自动生成的servlet,JSP页面继承了第二章中所讲的servlet的所有有点:平台和厂商独立性,集成化,高效性,可缩放性,健壮性和安全性。
阅读(1208) | 评论(0) | 转发(0) |