1.1 概述
1.1.1 什么是 JSP?
1.1.2 JSP 的优势
与 ASP 相比:html
- 动态部分用 Java 编写,因此更增强大易用
- 能够移植到多种不一样的服务器和操做系统
与 PHP 相比:数据库
与 Servlet 相比:浏览器
与 Javascript 相比:服务器
- 虽然JavaScript能够在客户端动态生成HTML,可是很难与服务器交互,所以不能提供复杂的服务,好比访问数据库和图像处理等等。
1.2 工做原理
1.2.1 JSP 和 Servlet的区别
JSP 是一种 Servlet,可是它与 HttpServlet 的工做方式不太同样:jsp
- HttpServlet 是先编译后部署:先将源代码编译为 class 文件,而后部署到服务器下
- JSP 是先部署后编译:先部署代码,而后编译为 class 文件。JSP 会在客户端第一次请求 JSP 文件时被编译为 HttpJspPage 类。该类会被服务器临时存放在服务器工做目录里面。
因为 JSP 只在客户端第一次请求时被编译,因此第一次请求 JSP 时会感受比较慢。
工具
1.2.2 JSP 工做原理
如下步骤代表了Web服务器是如何使用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网页,就好像在处理静态网页同样。
以上说起到的步骤能够用下图来表示:
1.3 生命周期
JSP 也是一种 Servlet,运行时只有一个实例,它也有生命周期。
spa
如下是JSP生命周期中所走过的几个阶段:
- 编译阶段:servlet容器编译servlet源文件,生成servlet类
- 初始化阶段:加载与JSP对应的servlet类,建立其实例,并调用它的初始化方法
- 执行阶段:调用与JSP对应的servlet实例的服务方法
- 销毁阶段:调用与JSP对应的servlet实例的销毁方法,而后销毁servlet实例
很明显,JSP生命周期的四个主要阶段和servlet生命周期很是类似,下面给出图示:
操作系统
例
code
JSP生命周期代码实例
<%
@ page contentType
=
"
text/html; charset=GB2312
"
%>
<
html
><
head
><
title
>life.jsp
</
title
></
head
><
body
>
<%
!
private
int
initVar
=
0
;
private
int
serviceVar
=
0
;
private
int
destroyVar
=
0
;
%>
<%
!
public
void jspInit(){
initVar
++
;
System.out.println(
"
jspInit(): JSP被初始化了
"
+
initVar
+
"
次
"
);
}
public
void jspDestroy(){
destroyVar
++
;
System.out.println(
"
jspDestroy(): JSP被销毁了
"
+
destroyVar
+
"
次
"
);
}
%>
<%
serviceVar
++
;
System.out.println(
"
_jspService(): JSP共响应了
"
+
serviceVar
+
"
次请求
"
);
String
content1
=
"
初始化次数 :
"
+
initVar;
String
content2
=
"
响应客户请求次数 :
"
+
serviceVar;
String
content3
=
"
销毁次数 :
"
+
destroyVar;
%>
<
h1
>
<%
=
content1
%>
</
h1
>
<
h1
>
<%
=
content2
%>
</
h1
>
<
h1
>
<%
=
content3
%>
</
h1
>
</
body
></
html
>
参考资料
Java Web 整合开发
htm
http://www.w3cschool.cc/jsp/jsp-tutorial.html