JSP的体系结构

如下内容引用自http://wiki.jikexueyuan.com/project/jsp/architecture.htmlhtml

Web服务器须要一个JSP引擎,即处理JSP页面的容器。JSP容器负责为JSP页面拦截请求。web

JSP容器适用于Web服务器,来提供JSP运行时环境和其余服务的需求。它知道如何理解JSP的部分特殊元素。编程

如下图表显示了JSP容器的位置以及在一个Web应用程序中的JSP文件。浏览器

JSP处理服务器

下面的步骤解释了web服务器如何使用JSP建立Web页面:jsp

  • 做为正常的页面,浏览器发送一个HTTP请求到Web服务器。翻译

  • Web服务器认可一个JSP页面的HTTP请求,并将其转发给一个JSP引擎。这是经过使用URL或JSP页面实现的,该JSP页面是以.jsp结尾而不是以.html结尾的。htm

  • JSP引擎从磁盘加载JSP页面并将其转换为一个Servlet的内容。这种转换是很是简单的,全部模板文本转换为println()语句,全部JSP元素转换为Java代码实现页面的相应的动态行为。blog

  • JSP引擎编译Servlet到一个可执行的类中,并将原始请求转发给一个Servlet引擎。get

  • 调用Servlet引擎的Web服务器的一部分加载Servlet类并执行它。执行期间,Servlet产生一个HTML格式的输出,Servlet引擎将该输出传递到HTTP响应内的Web服务器中。

  • Web服务器将HTTP响应以静态HTML内容的形式转发到浏览器中。

  • 最后Web浏览器处理HTTP响应中的动态生成的HTML页面,就好像它是一个静态页面。

上述全部步骤以下图所示:

一般,JSP引擎检查JSP文件的Servlet是否已存在,JSP的修改日期是否比Servlet的过期。若是JSP的修改日期比其生成的Servlet的修改日期过期,那么JSP容器假设JSP修改日期没有改变,且生成的Servlet的修改日期仍然与JSP的内容相匹配。与其余脚本语言(好比 PHP)相比,这个过程更有效率,所以更加快速。

因此在某种程度上来讲,一个JSP页面只是用另外一种方式来写Servlet,而不须要成为一个Java编程奇才。除了翻译阶段,处理JS 页面彻底就像处理一个普通的Servlet同样。

相关文章
相关标签/搜索