一个jsp页面引入另一个jsp页面的三种方式 及静态引入和动态引入的区别

1.第一种:jstl import

     <c:import url="nav.jsp"></c:import>

2.第二种: jsp include指令

    include指令告诉容器:复制呗好汉文件汇总的所有内容,再把它粘贴到这个文件中。

    <%@ include file="nav.jsp" %>

3.第三种:jsp include动作

    <jsp:include page="nav.jsp" flush="true">

注意:1 include指令在转换时插入nav.jsp的源代码,而<jsp:include>动作在运行时插入nav.jsp的响应。

           <%@include为静态包含,<%@include不论包含的是txt文本还是jsp文件,被包含的页面都不会从新编译

          <%@include为静态包含,<%@include不论包含的是txt文本还是jsp文件,被包含的页面都不会从新编译。

            <%@include为静态包含,包含了几个JSP转译成servlet时就会有  几 个 class文件,如果在jsp1定义了变量i同时在jsp2也定义了变量i那么你编译都会通不过的, jsp容器会告诉你i重复定义了.
                <jsp:include 为动态包含,<jsp:include 如包含jsp文件,这每次加载主页面的时候,被包含的页面都要重新编译。

                  就是说不管你包含了几个jsp页面转译成servlet时只有一个class文件

什么是静态引入?

  静态引入指的是,讲一个外部文件嵌入到当前jsp文件中,同时解析这个页面的jsp语句,它会把目标页面的其他编译指令也包含进来。例如:

<%@include file="error.jsp"%>

其中的error.jsp是个简单的错误处理页面 代码如下:

<%@ page contentType="text/html; charset=utf-8" language="java" isErrorPage="true" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>错误提示页</title>
</head>
<body>
这是一个错误处理页面</br>
</body>
</html>

在tomcat运行到该静态include范例后,查看生成的servlet类可看到如下的代码段

查看方式;windows下,找到tomcat安装目录下的work文件夹,进入Catalina文件夹下的localhost文件夹,找到当前项目所在的文件夹,找到org目录,进入其下的apache目录下的jsp文件夹,即可看到一个include1_jsp.java文件,这就是该include.jsp对应生成的servlet类。

我们可以看出静态导入是:包含页面在编译时将完全包含被包含页面的代码。需要指出的是,静态导入还会降被包含页面内的编译指令也包含进来,如果两个页面的编译指令有冲突,那么页面就会出错。

什么是动态导入?

  动态导入是不会导入include页面的编译指令的,而是仅仅将被导入页面的body内容插入到本页面,例如

<jsp:include page="error.jsp" flush="true" />

再次查看生成的servlet类我们会发现动态导入只是使用了一个include方法来插入目标页面的内容,而不是将目标页面完全融入到本页面中。

归纳而言静态导入时被导入页面的编译指令会其作用,而动态导入时被导入页面的编译指令则失去作用,只是插入被导入页面的body内容。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值