zoukankan      html  css  js  c++  java
  • JSP页面的静态包含和动态包含的区别与联系

    JSP中有两种包含:

    1. 静态包含:<%@include file="被包含页面"%>
    2. 动态包含:<jsp:include page="被包含页面" flush="true">

    下面以一个例子来说明如何使用包含

    实例:

    项目文件树:

    header.jsp文件中内容:

    1 <html>
    2 <head>
    3     <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
    4     <title>Insert title here</title>
    5 </head>
    6 <body>
    7 <h1>This is header</</h1>  

    content.jsp文件中内容

     1 <table border="1">
     2     <tr>
     3         <td>col1</td>
     4         <td>col2</td>
     5     </tr>
     6     <tr>
     7         <td>col1</td>
     8         <td>col2</td>
     9     </tr>
    10 </table>

    footer.jsp文件中内容:

    1 <hr>
    2         copyright: 1999-2010
    3     </body>
    4 </html>

    1.静态包含:

    index.jsp文件中内容:

    <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
    
    <%@ include file="/header.jsp" %>
    
    <%@ include file="/content.jsp" %>
    
    <%@ include file="/footer.jsp" %>

    页面显示结果:

    被编译成的java文件:

    2.动态包含

    index.jsp文件中内容:

    <%@ page language="java" import="java.util.*" pageEncoding="GB18030"%>
    
    <jsp:include page="/header.jsp"></jsp:include>
    
    <jsp:include page="/content.jsp"></jsp:include>
    
    <jsp:include page="/footer.jsp"></jsp:include>

    页面显示结果:

    被编译成的java文件:

    说明:这个例子,使用静态包含和动态包含最终的执行结果相同,但是实现过程不同,很明显编译成的java文件数目不同。

    3.静态和动态包含的区别与联系

    注:下文将包含有其它文件的jsp文件称为主体文件,比如上文中的index.jsp文件.将被包含的文件称为包含文件,比如上文中的header.jsp文件.

    1. <%@ include file=” ”%>是指令元素。<jsp:include page=” ”/>是行为元素
    2. 最终编译成java文件的数目不同(从上面的例子可以看出)
      • 静态包含在转换成为java文件的时候将包含文件的内容“复制”到主体文件,然后作为一个整体编译。最终编译为一个java文件。
      • 动态包含是各个jsp文件分别转换,分别编译。最终编译成多个java文件。
    3. 执行时间不同
      • 静态包含发生在:JSP ---> java文件阶段。
      • 动态包含发生在:执行class文件阶段,动态加入。
    4. 静态包含在两个文件中不能有相同的变量,动态包含允许。
    5. 由于静态包含相当于将包含文件内容直接复制到主体文件中,如果出现相同的变量,就会出现覆盖等问题,导致文件出错。而动态包含相当于调用不同的jsp,变量所在的空间不同,自然不会出现覆盖等现象。
    6. 无论是动态包含还是静态包含,其request对象都是相同的。
    7. 静态包含最终编译成一个java文件,有一个request对象很好理解。而动态包含最终编译成多个jsp文件,为何会使用一个request对象呢?其实这些jsp组合的过程是一个请求转发的过程,自然也使用同一个request对象了。

    4.静态包含和动态包含的使用

    简单总结一下,就一句话:被包含的页面是静态页面就用静态包含,是动态页面就用动态包含.(当然,不是很绝对,但是这样用没有错.)

  • 相关阅读:
    python基础(6)---set、collections介绍
    Vue Router滚动行为 scrollBehavior
    CSS expression属性
    定时器setTimeout实现函数节流
    axios封装
    vue项目结构
    搭建vue项目环境
    javascript参数传递中处理+号
    微信支付 chooseWXPay:fail
    微信支付get_brand_wcpay_request:fail
  • 原文地址:https://www.cnblogs.com/jixiaohua/p/10421131.html
Copyright © 2011-2022 走看看