JSP中静态包含和动态包含的用法和区别

静态包含:include指令

在实际开发时,有时需要在JSP页面静态包含一个文件,例如HTML文件、文本文件等,这时,可以通过include指令来实现。include指令的具体语法格式如下所示:

<%@ include file="被包含的文件地址"%>

注意:插入的文件一般不以"/"开头,而是使用相对路径。

动态包含:<jsp:include>动作元素

在JSP页面中,为了把其他资源的输出内容插入到当前JSP页面的输出内容中,JSP技术提供了jsp:include动作元素,其具体语法格式如下所示:

<jsp:include page="relativeURL" flush="true|flase"/>

注意:page属性用于指定被引入资源的相对路径;flush属性用于指定是否将当前页面的输出内容刷新到客户端,默认情况下,flush属性的值为flase。

二者比较:

  1. 静态包含将多个页面的内容合并后输出,多个jsp页面生成一个java文件,编译成一个class文件;
    动态包含将多个页面的内容合并后输出,多个jsp页面生成多个java文件,编译成多个class文件(被包含的页面编译处理后将结果包含在页面中)。
  2. 静态包含只能引入遵循JSP格式的文件,被引入文件与当前JSP文件需要共同合并才能翻译成一个Servlet源文件;
    动态包含要引入的资源与当前JSP页面是两个彼此独立的执行实体,即被动态引入的资源必须能被Web容器独立执行。
  3. 静态包含引入的资源是在编译时期包含的,包含的是源代码; 动态包含引入的资源是在运行时才包含的,而且只包含运行结果。
  4. 动态包含运行原理与RequestDispatcher.include()方法类似,即包含的页面不能改变响应状态码或者设置响应头,而静态包含没有这方面的限制。
  5. 静态包含在编写代码的时候一般放在最顶部,主要附加的是被重用的代码,这里所说的附加是指把源代码原封不动的附加过来,例如在jsp程序中使用这个指令的时候file里面的值(即要导入的文件)不能带多余的标签或是与当前jsp文件重复的东西。例如里面不要包含这样的标签,因为是把源代码原封不动的附加过来,所以会与当前的jsp中的这样的标签重复导致出错;
    动态包含导入一个重用文件的时候,这个文件是经过编译的,通俗点说就是附加这个要导入文件经过编译后的效果,所以可以含有与当前jsp程序中重复的内容,因为在附加过来之前就会被解析掉。
  6. 静态包含 简单的理解就是你可以认为 这两个页面代码是写在同一个页面里; 动态包含:当向这个页面发出请求后。会转发到 include
    的哪个页面去执行。 执行完了后又接着执行本页面余下的代码。
发布了100 篇原创文章 · 获赞 240 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/zag666/article/details/103767942