JSTL中的scope属性
前两天接到老大一个任务:要验证一下<c:import>能否动态地引入不同的文件。当时很兴奋,要知道在对日外包里面,这个也得算技术活了。呵呵!
说干就干,写了两个jsp文件:m.jsp test1.jsp。目的是用变量"a"代替test1中的“1”。代码如下:
m.jsp
----------------------------------
<@import prefix="c" uri="http://java.sun.com/jstl.core">
<c:set var="a" value="1"/>
<c:import url="test${a}.jsp"/>
----------------------------------
test1.jsp
---------------------------------
<@import prefix="c" uri="http://java.sun.com/jstl.core">
<BR>TEST1<BR><c:out value="${a}"/>
---------------------------------
试验之前老大说估计不行,而结果却是
TEST
1
那是不是可以说JSTL(Jsp Standard Taglib Language)是可以解析EL(Express Language)的呢?。我再看了看tomcat里面work目录下编译java文件(m_jsp.java文件),其实是没编译EL的,即还是把他作为字符串参数传递,而在执行的时候动态的解析。
说到现在还没说到<c:import> 的scope属性,别急哈。先谈谈引入这个问题的原因:试验结果出乎老大的意料,他在那JJYY了一阵,我在一旁偷着乐:哈哈,没搞对吧!没想到他马上又说:如果给"a"设不同的值,能引入不同的文件吗? “恩.........,我也不知道”我应到。于是他在我机子上写了下面的代码:
m.jsp
----------------------------------
<@import prefix="c" uri="http://java.sun.com/jstl.core">
<c:set var="a" value="1"/>
<c:import url="test${a}.jsp"/>
<c:set var="a" value="2" scope="request"/>
<c:import url="test${a}.jsp"/>
----------------------------------
test1.jsp
---------------------------------
<@import prefix="c" uri="http://java.sun.com/jstl.core">
<BR>TEST1<BR><c:out value="${a}"/>
---------------------------------
test2.jsp
---------------------------------
<@import prefix="c" uri="http://java.sun.com/jstl.core">
<BR>TEST2<BR><c:out value="${a}"/>
---------------------------------
结果如下:
TEST1
1
TEST1
1
老大火了,为什么不行呢?这次test2.jsp怎么没引入进来??“不搞了,看来不行”老大拂袖而去,丢了这么一句。
“我来搞搞”我心理想着,看着他写的代码,伊?怎么m.jsp中第二次设值要加一个“scope”属性呢?我试着把第次设a的值也加上“scope="request"”,跑了跑。结果:
TEST1
1
TEST2
2
我很激动,马上报告老大。老大过来看了看,他也觉得奇怪啊,然后他把两行代码的scope都去掉,结果和都加上scope是一样的。我和老大现在都想不通了,于是老大去找了他的老大(呵呵,某部的部长)!
果然是老大的老大啊,看了不到一分钟。马上就解释了原因:默认下scope属性值是"page", <c:set var="a" value="1"/> <c:set var="a" value="2" scope="request"/>是申明了两个的不同作用域的变量,我们可以称为page.a ,request.a。<c:import url="test${a}.jsp"/>引入时,肯定是先在当前页面找a的值了,找不到的话再去找request作用域的a,如果找到了,当然就不用去更大的作用域找了。
听到这,老大汗.....;我更汗.........。看来自己现只能是个小兵水平哈。
总结:
1.scope的作用域大小依次为:application>session>request>page(默认)
2.jsp处理变量的作用域先后依次为:page(默认)->request->session->application
原文链接:http://blog.csdn.net/zt_soft/article/details/1335238
JSTL中的scope属性的更多相关文章
- 在表格中,th scope="row"和th scope="col"中的scope属性的用法及意义
把表头和数据联系起来:scope,id,headers属性就我用到现在,很多表格要比上面提供的例子复杂的多.让例子复杂一点,我会移去"Company"表头,并且把第一列的数据移到表 ...
- AngularJs 指令中 的Scope属性
一.概念说明 可以是true. false .哈希对象 {} 1.true 新创建了一个作用域,且继承了父作用域:在初始化的时候,用了父作用域的属性和方法去填充我们这个新的作用域.它和父作用域不是同一 ...
- 菜鸟学习Struts——Scope属性
一.概念. 在Action映射配置中,Scope属性可以取值为:request或session.Scope属性表示:Struts框架在将 ActionForm对象(与目标Action匹配的Ac ...
- AngularJS中Directive指令系列 - scope属性的使用
文章是转的,我做下补充.原文地址:https://segmentfault.com/a/1190000002773689 每当一个指令被创建的时候,都会有这样一个选择,是继承自己的父作用域(一般是外部 ...
- spring中bean的scope属性理解
bean的scope属性有prototype,singleton,request, session几个属性 spring和struts2整合的时候,struts2的action要配置成scope=&q ...
- 【Spring源码解读】bean标签中的属性(一)你可能还不够了解的 scope 属性
scope 属性说明 在spring中,在xml中定义bean时,scope属性是用来声明bean的作用域的.对于这个属性,你也许已经很熟悉了,singleton和prototype信手捏来,甚至还能 ...
- Spring中bean作用域属性scope
关键字: spring中属性scope的prototype是什么意思 默认情况下,从bean工厂所取得的实例为Singleton(bean的singleton属性) Singleton: Spri ...
- JSP中scope属性 scope属性决定了JavaBean对象存在的范围
scope属性决定了JavaBean对象存在的范围. scope的可选值包括: ---page(默认值) ---request ---session ---application 1.page范围 ...
- JSTL中的TLD配置和使用。
一,JSTL介绍: JSTL标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一 ...
随机推荐
- Android API 21 Toolbar Padding
up vote117down votefavorite 44 How do I get rid of the extra padding in the new Toolbar with Android ...
- MySQL浮点计算存在的问题与解决方案
如有疑问请联系微信:onesoft007 在计算机中,浮点数往往很难精确表示,那么浮点数运算结果也往往难以精确表示.MySQL同样也存在这个问题,并表现在如下几个方面. 问题 1.相同的输入,可 ...
- OneSQL的docker之旅
百度盘下载地址: http://pan.baidu.com/s/1v9GWA OneSQL Docker使用方法: 1. 解压 tar zxvf OneSql-Docker-5.6.2 ...
- Lua知识备忘录
最近对Lua很感兴趣,以下是本阶段学习的总结,包含三部分,一部分是基础语法,一部分是扩展和解释器嵌入,最后一部分是Lua小练习. 知识涉及:Lua语言编程基础:Lua&C++:Lua扩展.嵌入 ...
- winform客户端程序第一次调用webservice方法很慢的解决方法
.net2.0的winform客户端最常用的与服务端通信方式是通过webservice,最近在用dottrace对客户端做性能测试的时候发现,客户端程序启动以后,第一次调用某一个webservice的 ...
- Xib与View关联方法
1,在需要实例的地方 //加载一个uiview的作法 [LotteryInvestigationView *lotteryInvestigationView=[[[NSBundle mainBundl ...
- 【Android】Android清除本地数据缓存代码
最近做软件的时候,遇到了缓存的问题,在网上看到了这个文章,感觉不错.分享给大家看看 文章出处:http://www.cnblogs.com/rayray/p/3413673.html /* * 文 件 ...
- PHP 数组
// 这里用数字来作为索引 $myArray = array(2012, 'blue', 5, 'BMW'); // 这个用关键字作为索引 $myAssocArray = array('year' = ...
- PHP中file_put_contents追加时换行
很多时候记录日志需要换行.不建议使用\r\n,因为:在windows中\r\n是换行在Mac中\r是换行在Liunx中\n是换行 但是PHP提供了一个常量来匹配不同的操作系统,即: file_put_ ...
- IDH2.5.1. Pain Points
1. On Redhat 6.2 after uninstalling a cluster, and re-install IDH 2.5.1, you meet a "can not wr ...