JSP中动态INCLUDE与静态INCLUDE的区别

上传人:飞*** 文档编号:40208238 上传时间:2018-05-24 格式:DOC 页数:7 大小:41.50KB
返回 下载 相关 举报
JSP中动态INCLUDE与静态INCLUDE的区别_第1页
第1页 / 共7页
JSP中动态INCLUDE与静态INCLUDE的区别_第2页
第2页 / 共7页
JSP中动态INCLUDE与静态INCLUDE的区别_第3页
第3页 / 共7页
JSP中动态INCLUDE与静态INCLUDE的区别_第4页
第4页 / 共7页
JSP中动态INCLUDE与静态INCLUDE的区别_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《JSP中动态INCLUDE与静态INCLUDE的区别》由会员分享,可在线阅读,更多相关《JSP中动态INCLUDE与静态INCLUDE的区别(7页珍藏版)》请在金锄头文库上搜索。

1、javajava 面试笔试题面试笔试题:JSP:JSP 中动态中动态 INCLUDEINCLUDE 与静态与静态 INCLUDEINCLUDE 的区别的区别? ?日期:2008-09-15来源: 作者:志伟动态 INCLUDE 用 jsp:include 动作实现 它总是会检查所含文件中的变化,适合用于包含动态页面 ,并且可以带参数 .静态 INCLUDE 用 include 伪码实现 ,定不会检查所含文件的变化,适用于包含静态页面 下面非常详细地解析了有关JSP 动态 INCLUDE 和静态 INCLUDE 的使用方法及其区别:我们都知道在 jsp 中 include 有两种形式 ,分别是前

2、者是指令元素、后者是行为元素.具体它们将在何处用 ?如何用及它们有什么区别?这应该是很多人看到它都会想到的问题 .下面一起来看看吧 .通常当应用程序中所有的页面的某些部分(例如标题、页脚和导航栏)都相同的时候 ,我们就可以考虑用include.具体在哪些时候用 ,哪些时候用 .这种形式 .首先要明白的是它们之间的区别.只有了解了它们用法的不同才理解该在何时去用以及如何选择.,jsp 的 include 指令元素读入指定页面的内容.并把这些内容和原来的页面融合到一起 .(这个过程是在翻译阶段 :也就是 jsp 被转化成 servlet 的阶段进行的 .这里对翻译阶段进行一下说明:我们知道 ,js

3、p 页面不能原封不动地被传送给浏览器,所有的 jsp 元素都必须首先由服务器进行处理 .这是通过将 jsp 页面转达化成 servlet,然后执行这个 servlet 来完成的 .服务器需要一个jsp 容器来处理 jsp 页面 .jsp 容器通常以 servlet 的形式来实现 ,这个 servlet 经过配置 ,可以处理对 jsp 页面的所有请求 .Jsp 容器负责将 jsp 页面转化成 servlet(称为 jsp 页面实现类 ?JSP Page implementation class),并编译这个 servlet.这两步就构成了翻译阶段.由此我们就会知道 :jsp 页面是把 inclu

4、de 指令元素所指定的页面的实际内容(也就是代码段 )加入到引入它的jsp 页面中 ,合成一个文件后被jsp 容器将它转化成servlet.可以看到这时会产生一个临时class 文件和一个 java 文件 .下面举个例子 .服务器用 tomcat,引入页面的 jsp 文件叫 test.jsp.被引入的页面叫date.jsp.这个 jsp 文件里存放的是一个有关时间的 jsp 代码 ,当前的上下文根设为test/=date.jsp 的源文件 =/document.write(“);/=以下是 test.jsp 的源文件 =/include 的两种用法 /我们在这里用 include 的两种不同形

5、式来引入date.jsp 这个文件 .有关 jsp 中 include 的两种用法 .敬请关注 .在 test.jsp 文件中 ,我们只输出了一行文本 “ 有关 jsp 中 include 的两种用法 .敬请关注 .“,现在让我们先用这种形式引入 date.jsp 这个文件 .你想会出现什么问题了吗?此时出现了错误提示:HTTP Status 500 ?org.apache.jasper.JasperException: /date.jsp(0,0) Page directive: cant have multiple occurrences of contentType以下还有一堆错误 ,但

6、我们只要看这里就知道问题的所在了.状态码为 http 500 服务器内部错误 .再看下面的提示 .在 date.jsp 页面中不能指定多个contentType.原因就在这里了 .是因为在翻译阶段 ,date.jsp 文件的代码被原封不动地加入到了test.jsp 页面从而合成一个文件 .合成后的文件中就会相同的:这句代码 .解决的办法是把date.jsp 文件中的这句删掉 .刷新后再请求 test.jsp 页面请求 test.jsp 在页面显示如下2003 年 12 月 10 日 13:12:40有关 jsp 中 include 的两种用法 .敬请关注 .这时我们还不能发现什么.还是去查看

7、tomcat 下的临时文件吧 .到那里去看看 date.jsp 文件的内容是否已被加入到了 test.jsp 文件中 .目录E:tomcatworkStandalonelocalhosttest.在这个目录下会看到test_jsp.java 和 test_jsp.class 两个文件 .这里的 java 文件就是 jsp 容器将 jsp 转化成了 servlet 而得到的 test_jsp.java 这个文件 .相对应的 test_jsp.class 这个文件就是编译test_jsp.java 这个 servlet 文件产生的类文件了 .打开所产生的 servlet 文件 (test_jsp.

8、java).此时我们会发现 ,在 test.jsp 文件被转化成 servlet 文件时 ,在输出的 之间加入了一些不是 test.jsp 页面里面的代码 ,新加入的内容就是 date.jsp 里面的代码 : 新加入了哪些内容或是否真的加入了新的内容请自己测试去看一下就会一目了然了.在这里不再详述 .以上就是我们用 这种形式得到的结果 .下面我们换用 也就是将换成 ,然后请求 test.jsp.2003? 12?10? 13:30:13有关 jsp 中 include 的两种用法 .敬请关注 .此时会在页面上看见 .我们所引入 date.jsp 输出的日期中中文出现了乱码.什么原因 ?是因为

9、include 行为元素是在请求处理阶段执行的(此处要对请求处理阶段进行说明一下.Jsp 容器除了上面提到的负责将jsp 页面转化成 servlet 外,还负责调用 jsp 页面实现类以处理每个请求并产生应答.这个阶段我们就称为请求处理阶段.请求处理阶段仅执行类文件 ).所以在我们作 include 行为元素引入页面时 ,实际只是引用了date.jsp 这个文件被转化并被编译后产生的servlet 类文件 .既如此 , date.jsp 就是作为一个单独的文件在执行后才被test.jsp 文件运行时调用 .由于 date.jsp 文件中没有指定字符编码 .所以出现了乱码 .解决办法是在 dat

10、e.jsp 文件中重新把刚才去掉的这行语句加入后刷新重新运行.此时页面显示正确 ,并跟用 include 指令正常运行时一样 .再查看 tomcat 下的临时文件会发现 .此时多出了一个 date_jsp.java 文件和一个 date_jsp.class 文件 .这两个文件得来的方式跟test_jsp.java 和 test_jsp.class 文件得来的方式一样 .再查看一下此时test_jsp.java 文件的代码会发现 .此时只新增加了一句代码 :JspRuntimeLibrary.include(request, response, “date.jsp“, out, true);它并

11、没有把 date.jsp 文件的代码加入到test.jsp.只是在运行时引入了date.jsp 页面执行后所产生的应答.这意味着我们可以指定任何能够产生应答的Web资源 ,(例如一个 servlet 或一个 jsp 页面 ),只要这些资源所产生的类型和jsp 页面产生的内容类型相同.JSP 容器将通过一个内部的函数调用来执行指定的资源.因此 ,这些被引入的资源可以帮助处理原来的请求,所以这些资源可以访问请求作用域内的所有对象 .以及所有原来的请求参数.由于在主页面被请求时 ,这些页面还没有被引入到主页面中,所以你可以对 page 属性使用一个请求时属性值,以便根据运行时的情况来决定要引入哪一个

12、页面.还可以添加一些将被引入的页面读取的请求参数.“ flush=“true“ 如果修改了被引入的jsp 页面 ,那么可以立刻使用该页面的最新版本,这是因为对待被引入的页面的方式与对待由浏览器直接调用的jsp 页面的方式完全相同 .即容器检测页面的变化 ,并自动进入翻译阶段 ,以得到页面的最新版本 .(注意 ,include 行为元素同 jsp 其它元素一样 ,没有行为体时要以 “/“结束 .就像下面这样 .“ flush=“true“ /)以下是对 include 两种用法的区别主要有两个方面的不同 ;一:执行时间上 :是在翻译阶段执行在请求处理阶段执行 .二:引入内容的不同 :引入静态文本 (html,jsp),在 JSP 页面被转化成 servlet 之前和它融和到一起 .引入执行页面或servlet 所生成的应答文本 .另外在两种用法中file 和 page 属性都被解释为一个相对的URI.如果它以斜杠开头 ,那么它就是一个环境相关的路径 .将根据赋给应用程序的URI 的前缀进行解释 ,如果它不是以斜杠开头 ,那么就是页面相关的路径,就根据引入这个文件的页面所在的路径进行解释.更多有关 URL 是如何解释的请参考相关资料或书籍.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号