2023年6月20日发(作者:)
JSP的⼯作原理和运⾏流程
JSP起源在很多动态⽹页中,绝⼤部分内容都是固定不变的,只有局部内容需要动态产⽣和改变。
如果使⽤Servlet程序来输出只有局部内容需要动态改变的⽹页,其中所有的静态内容也需要程序员⽤Java程序代码产⽣,整个Servlet程序的代码将⾮常臃肿,编写和维护都将⾮常困难。
对⼤量静态内容的美⼯设计和相关HTML语句的编写,并不是程序员所要做的⼯作,程序员对此也不⼀定在⾏。⽹页美⼯设计和制作⼈员不懂Java编程,更是⽆法来完成这样的⼯作。
为了弥补Servlet的缺陷,SUN公司在Servlet的基础上推出了JSP(Java Server Pages)技术作为解决⽅案。
JSP是简化Servlet编写的⼀种技术,它将Java代码和HTML语句混合在同⼀个⽂件中编写,只对⽹页中的要动态产⽣的内容采⽤Java代码来编写,⽽对固定不变的静态内容采⽤普通静态HTML页⾯的⽅式编写。建⽴对JSP的直观认识
JSP页⾯是由HTML语句和嵌套在其中的Java代码组成的⼀个普通⽂本⽂件,JSP 页⾯的⽂件扩展名必须为.jsp。在JSP页⾯中编写的Java代码需要嵌套在<%和%>中,嵌套在<%和%>之间的Java代码被称之为脚本⽚段(Scriptlets),没有嵌套在<%和%>之间的内容被称之为JSP的模版元素。JSP中的Java代码可以使⽤n语句将其他Java程序代码产⽣的结果字符串输出给客户端,也可以使⽤n语句将它们打印到命令⾏窗⼝。
JSP⽂件就像普通的HTML⽂件⼀样,它们可以放置在WEB应⽤程序中的除了WEB-INF及其⼦⽬录外的其他任何⽬录中,JSP页⾯的访问路径与普通HTML页⾯的访问路径形式也完全⼀样。JSPJSP全称是Java Server Pages,它和servle技术⼀样,都是SUN公司定义的⼀种⽤于开发动态web资源的技术。JSP这门技术的最⼤的特点在于,写jsp就像在写html,但它相⽐html⽽⾔,html只能为⽤户提供静态内容,⽽Jsp技术允许在页⾯中嵌套java代码,为⽤户提供动态数据。Jsp快速⼊门:在jsp页⾯中输出当前时间。不管是JSP还是Servlet,虽然都可以⽤于开发动态web资源。但由于这2门技术各⾃的特点,在长期的软件实践中,⼈们逐渐把servlet作为web应⽤中的控制器组件来使⽤,⽽把JSP技术作为数据显⽰模板来使⽤。其原因为,程序的数据通常要美化后再输出:让jsp既⽤java代码产⽣动态数据,⼜做美化会导致页⾯难以维护。让servlet既产⽣数据,⼜在⾥⾯嵌套html代码美化数据,同样也会导致程序可读性差,难以维护。因此最好的办法就是根据这两门技术的特点,让它们各⾃负责各的,servlet只负责响应请求产⽣数据,并把数据通过转发技术带给jsp,数据的显⽰jsp来做。JSP的运⾏原理WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,它将把该访问请求交给JSP引擎去处理。Tomcat中的JSP引擎就是⼀个Servlet程序,它负责解释和执⾏JSP页⾯。每个JSP 页⾯在第⼀次被访问时,JSP引擎将它翻译成⼀个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类⽂件,然后再由WEB容器(Servlet引擎)像调⽤普通Servlet程序⼀样的⽅式来装载和解释执⾏这个由JSP页⾯翻译成的Servlet程序。
Tomcat 5.x把为JSP页⾯创建的Servlet源⽂件和class类⽂件放置在“
可以在WEB应⽤程序正式发布之前,将其中的所有JSP页⾯预先编译成Servlet程序。分析JSP所⽣成的Servlet代码JSP页⾯翻译成的Servlet继承了pBase类,HttpJspBase类是HttpServlet的⼀个⼦类,因此JSP页⾯翻译成的Servlet是HttpServlet的⼀个孙⼦类。HttpJspBase类实现了pPage接⼝中的部分⽅法,因此,HttpJspBase类是抽象的。
SUN公司为JSP的WEB容器开发商和JSP页⾯开发⼈员提供了⼀套专门应⽤于开发JSP程序的Java类,这套Java类被称为JSP API。HttpJspPage接⼝和JspPage接⼝属于JSP API,在HttpJspPage接⼝中只定义了⼀个_jspService⽅法,但它继承了JspPage接⼝,JspPage接⼝中定义了两个⽅法:jspInit()和jspDestroy()。HttpJspBase的init⽅法调⽤了jspInit和_jspInit⽅法,destroy⽅法内部调⽤了jspDestroy和_jspDestroy⽅法,service⽅法内部调⽤了_jspService⽅法。在HttpJspBase中实现的init、service和destroy⽅法都被声明成了final类型。
JSP页⾯中的位于<% %>外⾯的每⾏和紧临<%%>两边的每段⽂本被转换成以这些⽂本作为参数的⼀条条语句,JSP脚本⽚断(位于<%%>内的⼀段java代码)中的java代码被原封不动地搬移进了_jspService⽅法中的相应位置处,JSP表达式(位于<%=和%>之中的内容)则是被转换成以其中的变量或表达式作为参数的语句。
JSP的执⾏过程JSP的执⾏过程主要可以分为以下⼏点:客户端发出请求。Web容器将JSP转译成Servlet源代码。Web容器将产⽣的源代码进⾏编译。Web容器加载编译后的代码并执⾏。把执⾏结果响应⾄客户端。过程介绍客户端发出请求,请求为JSP,web容器就会找出相应的servlet进⾏处理将servlet转成字节码⽂件将字节码⽂件加载到web容器⾥这时会在web容器⾥建⽴实例进⾏初始化通过service接受请求然后web容器会⾃动产⽣两个对象servlet和service最后进⾏销毁
JSP的执⾏过程:(1)客户端发出Request(请求);(2)JSP Container将JSP转译成Servlet的源代码;(3)将产⽣的Servlet的源代码经过编译后,并加载到内存;(4)把结果Response(响应)⾄客户端。⼀般⼈会认为JSP的执⾏性能会和Servlet相差很多,其实执⾏性能上的差别只是在第⼀次的执⾏。因为JSP在执⾏第⼀次后,会被编译成Servlet⽂件,即为,当在重复调⽤执⾏时,就直接执⾏第⼀次所产⽣的Servlet,⽽不⽤在重新把JSP编译成Servlet。因此,除了第⼀次的编译会花较久的时间之外,之后JSP和Servlet的执⾏速度就⼏乎相同了。在执⾏JSP页⾯时,通常可分为两个时期:转移时期和请求时期: 转移时期:JSP页⾯转译成Servlet类(将JSP页⾯转移为Servlet源代码(.java)) 请求时期:Servlet类执⾏后,响应结果⾄客户端(将Servlet源代码(.java)编译成Servlet类(.class))当JSP页⾯在执⾏时,JSP Container会做检查的⼯作,若发现JSP页⾯有更新修改时,JSP Container才会再次编译JSP为Servlet;JSP没有更新时,就直接执⾏前⾯产⽣的Servlet
2023年6月20日发(作者:)
JSP的⼯作原理和运⾏流程
JSP起源在很多动态⽹页中,绝⼤部分内容都是固定不变的,只有局部内容需要动态产⽣和改变。
如果使⽤Servlet程序来输出只有局部内容需要动态改变的⽹页,其中所有的静态内容也需要程序员⽤Java程序代码产⽣,整个Servlet程序的代码将⾮常臃肿,编写和维护都将⾮常困难。
对⼤量静态内容的美⼯设计和相关HTML语句的编写,并不是程序员所要做的⼯作,程序员对此也不⼀定在⾏。⽹页美⼯设计和制作⼈员不懂Java编程,更是⽆法来完成这样的⼯作。
为了弥补Servlet的缺陷,SUN公司在Servlet的基础上推出了JSP(Java Server Pages)技术作为解决⽅案。
JSP是简化Servlet编写的⼀种技术,它将Java代码和HTML语句混合在同⼀个⽂件中编写,只对⽹页中的要动态产⽣的内容采⽤Java代码来编写,⽽对固定不变的静态内容采⽤普通静态HTML页⾯的⽅式编写。建⽴对JSP的直观认识
JSP页⾯是由HTML语句和嵌套在其中的Java代码组成的⼀个普通⽂本⽂件,JSP 页⾯的⽂件扩展名必须为.jsp。在JSP页⾯中编写的Java代码需要嵌套在<%和%>中,嵌套在<%和%>之间的Java代码被称之为脚本⽚段(Scriptlets),没有嵌套在<%和%>之间的内容被称之为JSP的模版元素。JSP中的Java代码可以使⽤n语句将其他Java程序代码产⽣的结果字符串输出给客户端,也可以使⽤n语句将它们打印到命令⾏窗⼝。
JSP⽂件就像普通的HTML⽂件⼀样,它们可以放置在WEB应⽤程序中的除了WEB-INF及其⼦⽬录外的其他任何⽬录中,JSP页⾯的访问路径与普通HTML页⾯的访问路径形式也完全⼀样。JSPJSP全称是Java Server Pages,它和servle技术⼀样,都是SUN公司定义的⼀种⽤于开发动态web资源的技术。JSP这门技术的最⼤的特点在于,写jsp就像在写html,但它相⽐html⽽⾔,html只能为⽤户提供静态内容,⽽Jsp技术允许在页⾯中嵌套java代码,为⽤户提供动态数据。Jsp快速⼊门:在jsp页⾯中输出当前时间。不管是JSP还是Servlet,虽然都可以⽤于开发动态web资源。但由于这2门技术各⾃的特点,在长期的软件实践中,⼈们逐渐把servlet作为web应⽤中的控制器组件来使⽤,⽽把JSP技术作为数据显⽰模板来使⽤。其原因为,程序的数据通常要美化后再输出:让jsp既⽤java代码产⽣动态数据,⼜做美化会导致页⾯难以维护。让servlet既产⽣数据,⼜在⾥⾯嵌套html代码美化数据,同样也会导致程序可读性差,难以维护。因此最好的办法就是根据这两门技术的特点,让它们各⾃负责各的,servlet只负责响应请求产⽣数据,并把数据通过转发技术带给jsp,数据的显⽰jsp来做。JSP的运⾏原理WEB容器(Servlet引擎)接收到以.jsp为扩展名的URL的访问请求时,它将把该访问请求交给JSP引擎去处理。Tomcat中的JSP引擎就是⼀个Servlet程序,它负责解释和执⾏JSP页⾯。每个JSP 页⾯在第⼀次被访问时,JSP引擎将它翻译成⼀个Servlet源程序,接着再把这个Servlet源程序编译成Servlet的class类⽂件,然后再由WEB容器(Servlet引擎)像调⽤普通Servlet程序⼀样的⽅式来装载和解释执⾏这个由JSP页⾯翻译成的Servlet程序。
Tomcat 5.x把为JSP页⾯创建的Servlet源⽂件和class类⽂件放置在“
可以在WEB应⽤程序正式发布之前,将其中的所有JSP页⾯预先编译成Servlet程序。分析JSP所⽣成的Servlet代码JSP页⾯翻译成的Servlet继承了pBase类,HttpJspBase类是HttpServlet的⼀个⼦类,因此JSP页⾯翻译成的Servlet是HttpServlet的⼀个孙⼦类。HttpJspBase类实现了pPage接⼝中的部分⽅法,因此,HttpJspBase类是抽象的。
SUN公司为JSP的WEB容器开发商和JSP页⾯开发⼈员提供了⼀套专门应⽤于开发JSP程序的Java类,这套Java类被称为JSP API。HttpJspPage接⼝和JspPage接⼝属于JSP API,在HttpJspPage接⼝中只定义了⼀个_jspService⽅法,但它继承了JspPage接⼝,JspPage接⼝中定义了两个⽅法:jspInit()和jspDestroy()。HttpJspBase的init⽅法调⽤了jspInit和_jspInit⽅法,destroy⽅法内部调⽤了jspDestroy和_jspDestroy⽅法,service⽅法内部调⽤了_jspService⽅法。在HttpJspBase中实现的init、service和destroy⽅法都被声明成了final类型。
JSP页⾯中的位于<% %>外⾯的每⾏和紧临<%%>两边的每段⽂本被转换成以这些⽂本作为参数的⼀条条语句,JSP脚本⽚断(位于<%%>内的⼀段java代码)中的java代码被原封不动地搬移进了_jspService⽅法中的相应位置处,JSP表达式(位于<%=和%>之中的内容)则是被转换成以其中的变量或表达式作为参数的语句。
JSP的执⾏过程JSP的执⾏过程主要可以分为以下⼏点:客户端发出请求。Web容器将JSP转译成Servlet源代码。Web容器将产⽣的源代码进⾏编译。Web容器加载编译后的代码并执⾏。把执⾏结果响应⾄客户端。过程介绍客户端发出请求,请求为JSP,web容器就会找出相应的servlet进⾏处理将servlet转成字节码⽂件将字节码⽂件加载到web容器⾥这时会在web容器⾥建⽴实例进⾏初始化通过service接受请求然后web容器会⾃动产⽣两个对象servlet和service最后进⾏销毁
JSP的执⾏过程:(1)客户端发出Request(请求);(2)JSP Container将JSP转译成Servlet的源代码;(3)将产⽣的Servlet的源代码经过编译后,并加载到内存;(4)把结果Response(响应)⾄客户端。⼀般⼈会认为JSP的执⾏性能会和Servlet相差很多,其实执⾏性能上的差别只是在第⼀次的执⾏。因为JSP在执⾏第⼀次后,会被编译成Servlet⽂件,即为,当在重复调⽤执⾏时,就直接执⾏第⼀次所产⽣的Servlet,⽽不⽤在重新把JSP编译成Servlet。因此,除了第⼀次的编译会花较久的时间之外,之后JSP和Servlet的执⾏速度就⼏乎相同了。在执⾏JSP页⾯时,通常可分为两个时期:转移时期和请求时期: 转移时期:JSP页⾯转译成Servlet类(将JSP页⾯转移为Servlet源代码(.java)) 请求时期:Servlet类执⾏后,响应结果⾄客户端(将Servlet源代码(.java)编译成Servlet类(.class))当JSP页⾯在执⾏时,JSP Container会做检查的⼯作,若发现JSP页⾯有更新修改时,JSP Container才会再次编译JSP为Servlet;JSP没有更新时,就直接执⾏前⾯产⽣的Servlet
发布评论