标签:
include的另种形式和区别
先简单的说下include的两种形式:
<% include file="" %>:为静态包含(加载)
<jsp:include page="" flush="true" />:为动态包含(加载)
简单来解释一下静态包含和和动态包含:
静态包含:JSP编译器编译的时候已经包含好相应的文件,生成一个java_servlet,对应的Servlet文件中已经包含了被包含的页面,然后javac编译成一个class文件,在jvm运行的的时候,一个页面不能传参(相当于给自己传参),没有意义.
动态包含:JSP编译器编译的时候,加载页面和被夹在页面会被解析成两个java_servlet文件,javac编译器会编译两次,生成两个class文件然后在jvm运行的过程中,这个时候包含文件才去调用被包含的class文件(注意:JSP标签需要自己关闭,不要忘了关闭的斜线)
下面是一个我自己画的分析图:
在给大家一些实例参照一下:
<!DOCTYPE HTML>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>jsp:include</title>
</head>
<body bgcolor="white">
<font color="red">
<%@ include file="文件名"%>
<%= request + "--1--" + "<br>"%>
<jsp:include page="文件名" flush="true" />
<%= request + "--1--"+ "<br />"%>
<jsp:include page="文件名?username=‘123‘" flush="true" />
</font>
</body>
</html>
上面例子可以看出,因为生成是两个不同的Servlet文件-->不同的class--->所以每个Servlet都有自己的request对象,不是同一个.但是第一个是生成一个Servlet所以是同一个request
<%@ page language="java" contentType="text/html; charset=utf-8"
pageEncoding="utf-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>TestBar.jsp</title>
</head>
<body>
<table width="100%">
<tr><td><%@ include file="文件名"%></td></tr>
<%=request.getParameter("username")%>
<tr><td><% out.println("<p>这是用户显示区</p>");%></td></tr>
</table>
</body>
</html>
上面的例子可以看出两个源文件生成后,是同一个页面,然后这个页面中用的是同一个request并且接收的都是同一个request对象.
标签:
原文地址:http://www.cnblogs.com/qq159357/p/4685457.html