include的两种形式与介绍

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对象.

 

posted @ 2015-08-09 20:50  只为一个不存在的ID  阅读(784)  评论(0编辑  收藏  举报