Web服务器需要JSP引擎,即用于处理JSP页面的容器。JSP容器负责拦截对JSP页面的请求。本教程利用Apache内置的JSP容器来支持JSP页面开发。
JSP容器与Web服务器一起使用,以提供JSP所需的运行时环境和其他服务。它知道如何理解JSP的组成部分。
下图显示了Web应用程序中JSP容器和JSP文件的位置。
以下步骤说明了Web服务器如何使用JSP创建网页-
与普通页面一样,您的浏览器将HTTP请求发送到Web服务器。
Web服务器识别出HTTP请求是针对JSP页面的,并将其转发到JSP引擎。这是通过使用以.jsp而不是.html结尾的URL或JSP页面完成的。
JSP引擎从磁盘加载JSP页面,并将其转换为servlet内容。这种转换非常简单,其中所有模板文本都转换为println()语句,所有JSP元素均转换为Java代码。这段代码实现了页面的相应动态行为。
JSP引擎将servlet编译为可执行类,并将原始请求转发到servlet引擎。
Web服务器的一部分称为servlet引擎,它会加载Servlet类并执行它。在执行期间,该servlet产生HTML格式的输出。输出进一步由Servlet引擎在HTTP响应内传递到Web服务器。
Web服务器根据静态HTML内容将HTTP响应转发到浏览器。
最后,Web浏览器将HTTP响应内的动态生成的HTML页面完全当作静态页面来处理。
下图中可以看到上述所有步骤-
通常,JSP引擎会检查JSP文件的servlet是否已经存在,以及JSP上的修改日期是否早于servlet。如果JSP早于其生成的Servlet,则JSP容器将假定JSP尚未更改,并且生成的Servlet仍与JSP的内容匹配。这使该过程比其他脚本语言(例如PHP)更有效,因此速度更快。
因此,从某种意义上说,JSP页面实际上是编写servlet的另一种方式,而不必成为Java编程向导。除了翻译阶段外,JSP页面的处理方式与常规servlet完全相同。