JSP2.0 学习笔记 (5)

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 ServletJSP 没有更新时,就直接执行前面所产生的Servlet

假如 当执行HelloJSP.jsp 时,Tomcat 会将它先转译为Servlet。 如某目录下的HelloJSP_jsp.javaHelloJSP_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]-->

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值