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" %>
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⽂件的数⽬不同。(从上⾯的例⼦可以看出)
a. 静态包含在转换成为java⽂件的时候将包含⽂件的内容“复制”到主体⽂件,然后作为⼀个整体编译。最终
编译为⼀个java⽂件。
b. 动态包含是各个jsp⽂件分别转换,分别编译。最终编程成多个java⽂件。
3. 执⾏时间不同
静态包含发⽣在:JSP---->java⽂件阶段。
动态包含发⽣在:执⾏class⽂件阶段。动态加⼊。
4. 静态包含在两个⽂件中不能有相同的变量,动态包含允许。
由于静态包含相当于将包含⽂件内容直接复制到主体⽂件中,如果出现相同的变量,就会出现覆盖等问题,导致⽂件出错。⽽动态包含相当于调⽤不同的jsp,变量所在的空间不同,⾃然不会出现覆盖等现象。
5. ⽆论是动态包含还是静态包含,其request对象都是相同的。也就是同⼀个request对象。
静态包含最终编译成⼀个java⽂件,有⼀个request对象很好理解。⽽动态包含最终编译成多个jsp⽂件,为何会使⽤⼀个request对象呢?其实这些jsp组合的过程是⼀个请求转发的过程,⾃然也使⽤同⼀个request对象了。
静态包含和动态包含的使⽤
简单总结⼀下,就⼀句话:被包含的页⾯是静态页⾯就⽤静态包含,是动态页⾯就⽤动态包含。(当然,不是很绝对,但是这样⽤没有错。)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。