请教 jsp中的<jsp:include>和<%@include>的区别

解决方案 »

  1.   

    根本就是两个东西第2个你肯定用到过,第一个来源于Servlet的一种转发机制。
      

  2.   

    include指令
    用来包含其他文件的内容,被包含的文件可以是JSP文件或者HTML文件
    include指令格式如下:
    <%@ include file="目标组件的绝对路径或者相对路径" %>
    通过例子来了解:
    两个JSP文件
    A.JSP
    <%@ page language="java" contentType="text/html; charset=gb2312"
        pageEncoding="gb2312"%>
    <%@include file="B.jsp" %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>A</title>
    </head>
    <body>
    <br>这是A打印出的内容
    </body>
    </html>B.jsp
    <%@ page language="java" contentType="text/html; charset=gb2312"
        pageEncoding="gb2312"%><html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>B</title>
    </head>
    <body>
    这是B打印出的内容 
    </body>
    </html>在A.jsp里有一句<%@include file="B.jsp" %>
    当我们运行A.JSP时我们看到的打印结果为:
    这是B打印出的内容 
    这是A打印出的内容 
    这说明B.JSP的内容包含到了A文件中通过实验我们可以总结到以下几个特点
    a.include指令属于静态包含,因为他在编译期间包含被包含的文件。
    b.被包含的文件不能传递参数 如:A.JSP
    <%@ page language="java" contentType="text/html; charset=gb2312"
        pageEncoding="gb2312"%>
    <%@include file="B.jsp?id=123" %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>A</title>
    </head>
    <body>
    <br>这是A打印出的内容
    </body>
    </html>
    c.两个页面访问的是同一个request对象
    把两个文件修改为如下:
    A.JSP
    <%@ page language="java" contentType="text/html; charset=gb2312"
        pageEncoding="gb2312"%>
    <%@include file="B.jsp" %>
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>A</title>
    </head>
    <body>
    <br>这是A打印出的内容   A接收到的内容<%=request.getParameter("username") %>
    </body>
    </html>B.JSP
    <%@ page language="java" contentType="text/html; charset=gb2312"
        pageEncoding="gb2312"%><html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
    <title>B</title>
    </head>
    <body>
    这是B打印出的内容  B接收到的内容<%=request.getParameter("username") %>
    </body>
    </html>当在地址栏运行http://localhost:8080/project/A.jsp?username="yuewei"时
    打印的结果为:
    这是B打印出的内容 B接收到的内容"yuewei" 
    这是A打印出的内容 A接收到的内容"yuewei" include标签
    属于动态包含,在客户端请求时期如果被执行到才会被动态的编译载入
    格式:
    <jsp:include page="B.jsp" />有以下几个特点:
    a.<jsp:include>可以带参数
    b.两个页面访问的不是同一个request对象,但可以取得包含它的页面的参数,并添加了自己的参数
    c.编译执行后会产生单独的class文件。
    对于include标签的特点验证 大家可以自己根据A.JSP与B.JSP修改来完成
    通过实验来验证。 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/java_cxrs/archive/2009/06/21/4286485.aspx