• JSP页面的静态包含和动态包含


      JSP中有两种包含:静态包含:<%@include file="被包含页面"%>和动态包含:<jsp:include page="被包含页面"flush="true">。下面以一个例子来说明如何使用包含。

     

    实例:

      项目文件树:

      header.jsp文件中内容:

    
    
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html; charset=GB18030">
            <title>Insert title here</title>
        </head>
        <body>
    	<h1>This is header</</h1>        
    
    
    

     content.jsp文件中内容:

    
    
    <table border="1">
    	<tr>
    		<td>col1</td>
    		<td>col2</td>
    	</tr>
    	<tr>
    		<td>col1</td>
    		<td>col2</td>
    	</tr>
    </table>
    
    
    

      footer.jsp文件中内容:

    
    
            <hr>
            copyright: 1999-2010
        </body>
    </html>
    
    
    

    静态包含:

    index.jsp文件中内容:

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

      页面显示结果:


      被编译成的java文件:


     

    动态包含

      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文件数目不同。

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

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

    1. <%@ include file=” ”%>是指令元素。<jsp:include page=” ”/>是行为元素
    2. 最终编译成java文件的数目不同。(从上面的例子可以看出)
      1. 静态包含在转换成为java文件的时候将包含文件的内容“复制”到主体文件,然后作为一个整体编译。最终编译为一个java文件。

      2. 动态包含是各个jsp文件分别转换,分别编译。最终编程成多个java文件。

    1. 执行时间不同

    静态包含发生在:JSP---->java文件阶段。

    动态包含发生在:执行class文件阶段。动态加入。

    1. 静态包含在两个文件中不能有相同的变量,动态包含允许。

    由于静态包含相当于将包含文件内容直接复制到主体文件中,如果出现相同的变量,就会出现覆盖等问题,导致文件出错。而动态包含相当于调用不同的jsp,变量所在的空间不同,自然不会出现覆盖等现象。

    1. 无论是动态包含还是静态包含,其request对象都是相同的。也就是同一个request对象。

    静态包含最终编译成一个java文件,有一个request对象很好理解。而动态包含最终编译成多个jsp文件,为何会使用一个request对象呢?其实这些jsp组合的过程是一个请求转发的过程,自然也使用同一个request对象了。

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

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

     

  • 相关阅读:
    hdu 5446 Unknown Treasure lucas和CRT
    Hdu 5444 Elven Postman dfs
    hdu 5443 The Water Problem 线段树
    hdu 5442 Favorite Donut 后缀数组
    hdu 5441 Travel 离线带权并查集
    hdu 5438 Ponds 拓扑排序
    hdu 5437 Alisha’s Party 优先队列
    HDU 5433 Xiao Ming climbing dp
    hdu 5432 Pyramid Split 二分
    Codeforces Round #319 (Div. 1) B. Invariance of Tree 构造
  • 原文地址:https://www.cnblogs.com/wxgblogs/p/5602689.html
Copyright © 2020-2023  润新知