JSP 体系结构 (architecture)
部署 JSP 应用程序时,WEB 服务器需要一个 JSP 引擎(又称 JSP 容器)来处理 JSP 页面
JSP 容器负责截获对 JSP 页面的请求,处理 JSP 页面,然后返回数据给客户端
本教程使用内嵌 JSP 容器的 Apache Tomcat 来部署 JSP 页面
JSP 容器 与 Web 服务器
JSP 容器与 Web 服务器协同合作,为 JSP 的正常运行提供必要的运行环境和其它服务,并且能够正确识别 JSP 网页内的 JSP 标签和动作
下图显示了 JSP 容器和 JSP 文件在 Web 应用中所处的位置
处理 JSP 请求
Tomcat 等 Java Web 服务器处理 JSP 请求时一般都经过如下过程
-
浏览器发送一个 JSP 页面 HTTP 请求给服务器
-
Web 服务器识别出这是一个对 JSP 网页的请求,并且将该请求传递给 JSP 引擎, 请求可以是 URL 或者 .jsp 文件
-
JSP 引擎从磁盘中载入 JSP 文件,然后将它们转化为 servlet
这种转化只是简单地将所有模板文本改用 println() 语句,并且将所有的 JSP 元素转化成 Java 代码 -
JSP 引擎将 Servlet 编译成可执行类,并且将原始请求传递给 Servlet 引擎
-
Web 服务器的某组件将会调用 Servlet 引擎,然后载入并执行 Servlet 类
在执行过程中,Servlet产生 HTML 格式的输出并将其内嵌于 HTTP response 中上交给 Web 服务器
-
Web 服务器以静态 HTML 网页的形式将 HTTP response 返回给浏览器
-
Web 浏览器处理 HTTP response 中动态产生的 HTML 网页,就好像在处理静态网页一样
上面的所有步骤,我们可以用一张图来表示
Java Web 高性能的原因
一般情况下,JSP 引擎会检查 JSP 文件对应的 servlet 是否已经被创建,并且检查 JSP 文件的修改日期是否早于servlet
如果 JSP 文件的修改日期早于对应的 servlet,那么容器就可以确定 JSP 文件没有被修改过并且 servlet 有效,这这使得整个流程与其他脚本语言(比如 PHP )相比要高效快捷一些