jsp中两种包含语句的区别

来源:百度知道 编辑:UC知道 时间:2024/05/08 23:32:43
<%@include file=""%>和<jsp:include page=""/>的区别

下两种include的区别:
  %@include file="uri"%
  --静态的包含页面:不管其内容如何只是将页面中的内容包含进来。
  --执行时:像将所有内容包含进来一起处理完之后再将所有的内容发送给客户端
  <jsp:include page="uri">:
  --动态包含页面:能自动区分所包含的是静态页面还是动态页面
  ---执行时:
  如果资源为惊天资源则直接将资源包含处理与%@include file="uri"%相同
  如果请求资源为动态,则先各自处理资源,之后将处理后的结果包含在一起。

<%@ include file=""%>指令在编写代码的时候一般放在最顶部,主要附加的是被重用的代码,这里所说的附加是指把源代码原封不动的附加过来,例如在jsp程序中使用这个指令的时候file里面的值(即要导入的文件)不能带多余的标签或是与当前jsp文件重复的东西。例如里面不要包含<html><body>这样的标签,因为是把源代码原封不动的附加过来,所以会与当前的jsp中的这样的标签重复导致出错。

而应用<jsp:include>标签导入一个重用文件的时候,这个文件是经过编译的,通俗点说就是附加这个要导入文件经过编译后的效果,所以可以含有与当前jsp程序中重复的内容,因为在附加过来之前就会被解析掉。

一个是指令标记,一个是动作标记,前者是直接将file包含的文件加到当前位置,后者是编译后加到当前位置的

前者是静态包含,也就是浏览器的地址会自动转变为你要指向的地址。
后者是动态包含,是在服务器内部转换,浏览器不知道,所以地址栏保持不变。

page directive的include是在编译的时候被复制到servlet的,也就是如果你在你的jsp运行的时候把这个被包含的文件修改了,那么显示页面不会有变化滴。这是在JSP2.0里面定义的规范,但是,呃,伟大的TomCat,它会自动检测你的文件是否修改了,所以,这个规则对于TomCat来说,无效~~但是