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 (响应)至客户端。
如下:
<!--[if gte vml 1]><v:shapetype id="_x0000_t75"
coordsize="21600,21600" o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe"
filled="f" stroked="f">
<v:stroke joinstyle="miter" />
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0" />
<v:f eqn="sum @0 1 0" />
<v:f eqn="sum 0 0 @1" />
<v:f eqn="prod @2 1 2" />
<v:f eqn="prod @3 21600 pixelWidth" />
<v:f eqn="prod @3 21600 pixelHeight" />
<v:f eqn="sum @0 0 1" />
<v:f eqn="prod @6 1 2" />
<v:f eqn="prod @7 21600 pixelWidth" />
<v:f eqn="sum @8 21600 0" />
<v:f eqn="prod @7 21600 pixelHeight" />
<v:f eqn="sum @10 21600 0" />
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />
<o:lock v:ext="edit" aspectratio="t" />
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:230.25pt;
height:156.75pt'>
<v:imagedata src="file:///D:/DOCUME~1/powinder/LOCALS~1/Temp/msoclip1/03/clip_image001.emz"
o:title="" />
</v:shape><![endif]--><!--[if !vml]-->
在执行JSP 网页时,通常可分为两个时期:转译时期(Translation Time)和请求时期(Request
Time)。
转译时期:JSP 网页转译成Servlet 类。
转译期间主要做了两件事情:将JSP 网页转译为Servlet 源代码(.java),此段称为转译时
期(Translation time);将Servlet 源代码(.java)编译成Servlet 类(.class),此段称为
编译时期(Compilation time)。
请求时期:Servlet 类执行后,响应结果至客户端。
<!--[if gte vml 1]><v:shapetype
id="_x0000_t75" coordsize="21600,21600" o:spt="75" o:preferrelative="t"
path="m@4@5l@4@11@9@11@9@5xe" filled="f" stroked="f">
<v:stroke joinstyle="miter" />
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0" />
<v:f eqn="sum @0 1 0" />
<v:f eqn="sum 0 0 @1" />
<v:f eqn="prod @2 1 2" />
<v:f eqn="prod @3 21600 pixelWidth" />
<v:f eqn="prod @3 21600 pixelHeight" />
<v:f eqn="sum @0 0 1" />
<v:f eqn="prod @6 1 2" />
<v:f eqn="prod @7 21600 pixelWidth" />
<v:f eqn="sum @8 21600 0" />
<v:f eqn="prod @7 21600 pixelHeight" />
<v:f eqn="sum @10 21600 0" />
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />
<o:lock v:ext="edit" aspectratio="t" />
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:338.25pt;
height:137.25pt'>
<v:imagedata src="file:///D:/DOCUME~1/powinder/LOCALS~1/Temp/msoclip1/07/clip_image001.emz"
o:title="" />
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
<!--[if gte vml 1]><v:shapetype id="_x0000_t75" coordsize="21600,21600"
o:spt="75" o:preferrelative="t" path="m@4@5l@4@11@9@11@9@5xe" filled="f"
stroked="f">
<v:stroke joinstyle="miter" />
<v:formulas>
<v:f eqn="if lineDrawn pixelLineWidth 0" />
<v:f eqn="sum @0 1 0" />
<v:f eqn="sum 0 0 @1" />
<v:f eqn="prod @2 1 2" />
<v:f eqn="prod @3 21600 pixelWidth" />
<v:f eqn="prod @3 21600 pixelHeight" />
<v:f eqn="sum @0 0 1" />
<v:f eqn="prod @6 1 2" />
<v:f eqn="prod @7 21600 pixelWidth" />
<v:f eqn="sum @8 21600 0" />
<v:f eqn="prod @7 21600 pixelHeight" />
<v:f eqn="sum @10 21600 0" />
</v:formulas>
<v:path o:extrusionok="f" gradientshapeok="t" o:connecttype="rect" />
<o:lock v:ext="edit" aspectratio="t" />
</v:shapetype><v:shape id="_x0000_i1025" type="#_x0000_t75" style='width:338.25pt;
height:137.25pt'>
<v:imagedata src="file:///D:/DOCUME~1/powinder/LOCALS~1/Temp/msoclip1/07/clip_image001.emz"
o:title="" />
</v:shape><![endif]--><!--[if !vml]--><!--[endif]-->
转译时期与请求时期程序
特别注意:
当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。
<!--[endif]-->
分享到:
相关推荐
jsp2.0 学习笔记+完整源码,包含了JSP开发中要用到的知识.
我在学习JSP 2.0 时作的完整笔记+源码,希望能对JSP的学习者有所帮助.
jsp2.0技术手册jsp2.0技术手册jsp2.0技术手册jsp2.0技术手册jsp2.0技术手册jsp2.0技术手册jsp2.0技术手册
6、发布个人学习笔记,并对学习笔记进行维护;7、支付宝在线支付接口,实现在线购买服务功能;8、个人信息管理,个人界面方案维护;9、信息反馈及维护;10、JavaMail邮件发送功能实现。各功能模块的稳定性都经过了...
对学习jsp技术的总结 jsp标签的应用
JSP学习笔记..................236 JSP前言.................236 第一章 Introduction to JSP...............238 第二章 Creating,Deploying and Executing a JSP..................239 第三章 JSP Scriplets,...
JSP学习笔记..................236 JSP前言.................236 第一章 Introduction to JSP...............238 第二章 Creating,Deploying and Executing a JSP..................239 第三章 JSP Scriplets,...
java(1) 整合入门(spring,struts,hibernate的整合)资料(1) 中大软件工厂项目前培训资料(1) 完整笔记+源码(1) ssh(1) C#查询参数化例子(1) 学习笔记+完整源码(1) 介绍与深入(1) 学习笔记(不含整合)(1) C#(1) .CHM格式...
采用TDD的开发方式,使用JUnit测试各层,甚至测试 jsp 输出的 w/o 错误。为了简化开发,预定义好了一套目录结构、基类、用来创建数据库、配置Tomcat、测试部署应用的 Ant 任务,帮助快速自动生成源程序和自动维护...
采用TDD的开发方式,使用JUnit测试各层,甚至测试 jsp 输出的 w/o 错误。为了简化开发,预定义好了一套目录结构、基类、用来创建数据库、配置Tomcat、测试部署应用的 Ant 任务,帮助快速自动生成源程序和自动维护...
6、发布个人学习笔记,并对学习笔记进行维护; 7、支付宝在线支付接口,实现在线购买服务功能; 8、个人信息管理,个人界面方案维护; 9、信息反馈及维护; 10、JavaMail邮件发送功能实现。 项目演示地址:...
十六进制数,零x开头 0x55(十六进制)=5*16+5(十进制) 类型:数据都必须有类型 boolean (8bit,不定的)只有true和false两个值 char 16bit, 0~2^16-1 (2^16=6万6) byte 8bit, -2^7~2^7-1 (2^7=128; 注意:两个 ...
(十七) Swing 学习笔记 108 Swing API 包括18个公共包: 108 例程1.1 HelloWorldSwing.java 109 例程2.2 HelloWorldJFrame.java 110 (十八) 动态加载文件树的java程序 111 FileSystemTree.java源代码 112 //内部类 ...