JSP 与Servlet 的比较:
Sun 公司首先发展出Servlet,其功能非常强大,且体系设计也很完善,但是它输出HTML 语法
时,必须使用out.println( )一句一句地输出,但是当整个网页内容非常复杂时,那么你的Servlet 程序可能
大部分都是用out.println( )输出HTML 的标签了!
Sun 公司推出类似于ASP 的嵌入型Scripting Language,并且给它一个新的名称:
JavaServer Pages ,简称为 JSP 。JSP 的执行过程: 36 / 197
(1) 客户端发出Request (请求);
(2) JSP Container 将JSP 转译成Servlet 的源代码;
(3) 将产生的Servlet 的源代码经过编译后,并加载到内存执行;
(4) 把结果Response (响应)至客户端。
如下:
在执行JSP 网页时,通常可分为两个时期:转译时期(Translation Time)和请求时期(Request
Time)。
转译时期:JSP 网页转译成Servlet 类。
转译期间主要做了两件事情:将JSP 网页转译为Servlet 源代码(.java),此段称为转译时
期(Translation time);将Servlet 源代码(.java)编译成Servlet 类(.class),此段称为
编译时期(Compilation time)。
请求时期:Servlet 类执行后,响应结果至客户端。
转译时期与请求时期程序
特别注意:
当JSP 网页在执行时,JSP Container 会做检查的工作,若发现JSP 网页有更新修改时,JSP Container (如tomcat ) 才会再次编译JSP 成Servlet;JSP 没有更新时,就直接执行前面所产生的Servlet。
假如 当执行HelloJSP.jsp 时,Tomcat 会将它先转译为Servlet。 如某目录下的HelloJSP_jsp.java和HelloJSP_jsp.class。其中HelloJSP_jsp.java
就是HelloJSP.jsp 所转译的Servlet 源代码。 其中 *.java 文件内容主要包含三部分:
public void _jspInit() { //当JSP 网页一开始执行时,最先执行此方法。因此,我们通常会把//初始化的工作写在此方法中。
…. 略
}
public void _jspDestroy() { //JSP 网页最后执行的方法。
…. 略
}
public void _jspService(HttpServletRequest request, HttpServletResponse
response) throws java.io.IOException, ServletException { //JSP 网页最主要的程序都是在//此方法中。
…. 略
}
可对照 HelloJSP.jsp 和 HelloJSP_jsp.java 。