JSP技术原理理解(1)

        一.概述

JSP全名为Java Server Pages,其根本是一个简化的Servlet设计【其实就是Servlet】,他实现了Html语法中的java扩张(以 <%, %>形式)。JSP与Servlet一样,是在服务器端执行的通常返回给客户端的就是一个HTML文本,因此客户端只要有浏览器就能浏览。Web服务器在遇到访问JSP网页的请求时,首先执行其中的程序段,然后将执行结果连同JSP文件中的HTML代码一起返回给客户端。插入的Java程序段可以操作数据库、重新定向网页等,以实现建立动态网页所需要的功能。

总结:网页中嵌入脚本代码【Java代码+JSP标记】


二.运行机制

用户请求一个JSP页面完成以下操作:
    1.将JSP文件翻译成Servlet文件(以.java为后缀),它是一个完整的java应用程序
    2.JSP引擎调用JVM编译Servlet文件得到可执行的.class代码文件
    3.JSP引擎调用JVM解释执行class文件,并将运行结果返回给服务器
    4.服务器将运行结果以HTML形式作为响应返回给客户端浏览器

 由于一个JSP页面在第一次访问时要经过翻译、编译和执行这几个步骤,所以客户端得到响应的时间比较长。当该页面再次被访问时,它对应的class文件已经生成,因此JSP页面的访问速度会很快。【第一次访问要经过前三个步骤,再次访问就不需要前两部了】

 当一个JSP页面被请求时,JSP引擎首先将其和它对应的Servlet文件作比较,如果此时的JSP页面比Servlet文件新,说明原来的JSP页面已经被更新,需要重新编译;如果相同,则直接执行原来的class文件。通过这种机制,JSP引擎可以实现JSP页面的动态更新





下面举个简单的案例


一个简单Myeclipse为我们默认生成的index,jsp文件

打开我的tomcat路径下,我们可以看到多了两个文件



原理很简单:我访问这个jsp页面的时候,会按照上面的顺序来运行的

下面看看我们翻译的Index_jsp的java文件【PS:默认翻译的命名规则就是名子_jsp】


看起来比较复杂吧。。有点像Servlet,因为都有init service destory这几个方法啊

规范定义中,JSP页面转换的Servlet必须实现 javax.servlet.jsp.JspPage这个接口【集成于javax.servlet.Servlet】
这个接口下有两个方法init destory

1.init
The jspInit() method is invoked when the JSP page is initialized.类型Servlet init 就是初始化

2.destory
The jspDestroy() method is invoked when the JSP page is about to be destroyed 同理就是销毁

文档上说是可以重写的,不过我们一般用不到吧

由于我们使用的一般都是http协议,所以还要实现它的一个子接口   HttpJspPage 【JSP页面使用Http协议】

该接口只有一个方法:service  类似Servlet的 service

The _jspService()method corresponds to the body of the JSP page. This method is defined automatically by the JSP container and should never be defined by the JSP page author.


通过剖析原理我们发现jsp原理就是servlet

JSP技术原理理解(1),古老的榕树,5-wow.com

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。