码迷,mamicode.com
首页 > Web开发 > 详细

jsp-静态包含和动态包含的区别

时间:2019-02-15 13:22:47      阅读:199      评论:0      收藏:0      [点我收藏+]

标签:生成   封装   import   新版本   阶段   因此   web资源   文件中   内容   

 

技术图片

include指令是静态包含。静态包含的意思就是:把文件的代码内容都包含进来,再编译!

技术图片

  • include指令是静态包含,include行为是动态包含。其实include行为就是封装了request.getRequestDispatcher(String url).include(request,response)

  • include行为语法是这个样子的

    <jsp:include page=""/>

技术图片

  • 使用jsp行为来包含文件,jsp源文件是这样子的:

技术图片

  • jsp行为包含文件就是先编译被包含的页面,再将页面的结果写入到包含的页面中(1.jsp)

  • 动态包含可以向被包含的页面传递参数(用处不大),并且是分别处理包含页面的(将被包含页面编译后得出的结果再写进包含页面)【如果有相同名称的参数,使用静态包含就会报错!】

总结

  1. <%@include file="xxx.jsp"%>在翻译阶段(将JSP页面转换成servlet的阶段),include会读入指定的页面中的内容,并将这些内容和原来的页面融合在一起,融合后的完整页面再被整体的转换为一个servlet。这意味着主页和被引入的页面共享所有的页面作用域数据。include指令的一个常见用法是引入应用程序的所有页面都需要的公共声明。,而<jsp:include page="xxx.jsp">是jsp中的动作指令,用于在运行时引入另外的资源。被引用页面改变后,容器可能不会马上产生反应。这个指令是在请求处理阶段而不是在翻译阶段执行的。该行为并不是要引入指定页面的实际内容,它将引入执行该引入页面后所产生的应答,这意味着你可以指定任何能够产生文本应答的web资源。JSP容器将通过一个内部的函数调用来调用指定的资源。因此,这些被引入的资源可以帮助处理原来的请求,所以这些资源可以访问请求作用域内的所有对象,以及所有的请求参数。但是要注意,它不能访问任何页面作用域属性,或是在主页面中声明的脚本变量。
       <c:import>行为和<jsp:include>相同,另外它还可以从外部资源引入数据,比如不同的web应用程序,或者一个FTPfuwq。
        所以应该使用<c:import>来代替<jsp:include>的使用。
        被引用页面改变后,新版本会立即投入使用。

  2. 使用静态包含只会产生一个class文件,而使用动态包含会产生多个class文件。<%@ include file%>是把引入的文件和当前的文件共同合斌成一个servlet文件进行解析。<JSP:include page>是把当前文件和引入文件生成两个不同的servlet文件,在当前文件中在进行动态的调用引入的servlet文件。

  3. 使用静态包含,包含页面和被包含页面的request对象为同一对象,因为静态包含只是将被包含的页面的内容复制到包含的页面中去;而动态包含包含页面和被包含页面不是同一个页面,被包含的页面的request对象可以取到的参数范围要相对大些,不仅可以取到传递到包含页面的参数,同样也能取得在包含页面向下传递的参数


 

jsp-静态包含和动态包含的区别

标签:生成   封装   import   新版本   阶段   因此   web资源   文件中   内容   

原文地址:https://www.cnblogs.com/hongchengshise/p/10382997.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!