感受jsp <%@ include 和 jsp:include 的不同

大家都知道,有两种引用页面的方法,一种是指示标签 “<%@ include  file=""%>”,一种是动作标签“<jsp:include  page=""/> ”。两种方法使用起来,乍一看效果相差一样,但还是一定区别的, 使用不当会出现错误.

      比如我有两个jsp,分别是a和b, 两个页面上都定义了一个“String  path = request.getContextPath()” 。现在我使用a页面用“ <%@ include  file=""%>”引入b页面, 结果最后访问a页面时报错了,说path这个变量被重复定义了。咱们再设一个c.jsp,用 “<jsp:include  page=""/>” 引入b页面,却运行正常。

         回想书上说,说明标签是静态引入,动作标签是动态,当初不太明白,现在我的粗浅理解是这样的:“<%@ include  file=""%>”是把b页面的源代码拼接到a页面中,再一块编译,所以“path”变量就形成了重复定义;而“<jsp:include  page=""/>”则是分开编译两个页面,把它们生成的html加到一起。这应该是两者最大的不同。


      再证实一下:在用“<%@  include ”时 ,把b页面的“path”变量定义去掉,结果它就可以使用a页面定义的“path”变量,没有错误;而用“<jsp:include”时,去掉b的变量定义语句,则访问的时候会“path”变量未定义,应该就是单独编译b.jsp时,发现有使用了"path"而“path”没有被定义。  

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值