include编译指令与include动作指令区别浅谈

1 篇文章 0 订阅

首先明确的是jsp页面是不可以直接被访问的,jsp被首次访问时会被编译成相应的servlet(“pageName_jsp.java”文件),然后编译执行有servlet生成相应视图。

下面看两个指令:

1、include编译指令:

A.jsp:
<%@include file="B.jsp" %>

以上代码表示将B.jsp页面的内容包含到A.jsp中;在编译时起作用,将B.jsp页面的代码包含到A.jsp中后编译成一个servlet,名为“A_jsp.java”,其中包含对A、B页面的视图输出代码;

B甚至可以不是一个完整的jsp页面

2、include动作指令:

A.jsp
<jsp:include page="B.jsp">
    <jsp:param name="userName" value="ren"/>
</jsp:include>

以上代码表示将B.jsp页面嵌入到A.jsp中,并给B.jsp传入一个“userName”参数,参数值为“ren”;由此可见A与B并不是同一个页面,至少不会是同一个servlet!事实正是如此,include动作指令只是将B.jsp页面的内容嵌入到了当前页面,并且可以为其传递参数。

//A_jsp.java中对B的引入
org.apache.jasper.runtime.JspRuntimeLibrary.include(request, response, "B.jsp", out, false);

 

两者区别:

1、静态导入(include编译指令)是将被导入页面代码嵌入,并编译成一个servlet;而动态导入(include动作指令)在servlet中使用include方法引入被导入页面内容;

2、静态导入是被导入页面编译指令起作用;动态导入时被导入页面的的编译指令不起作用;

3、动态导入可以传参给被导入页面

简单来说就是一个引入sp代码,一个引入页面(显示)内容

 

其实include动作与forward动作指令更像:

forward可将相应转发到B页面,url地址栏不会变,并且也可以传递参数给B页面,只显示B页面内容(A完全被代替),并且客户端给A的参数不会丢失,B页面可获取

include动作只是将B页面插入A,客户端传给A的参数B中也可以获取

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值