前两天接到老大一个任务:要验证一下<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属性的更多相关文章

  1. 在表格中,th scope="row"和th scope="col"中的scope属性的用法及意义

    把表头和数据联系起来:scope,id,headers属性就我用到现在,很多表格要比上面提供的例子复杂的多.让例子复杂一点,我会移去"Company"表头,并且把第一列的数据移到表 ...

  2. AngularJs 指令中 的Scope属性

    一.概念说明 可以是true. false .哈希对象 {} 1.true 新创建了一个作用域,且继承了父作用域:在初始化的时候,用了父作用域的属性和方法去填充我们这个新的作用域.它和父作用域不是同一 ...

  3. 菜鸟学习Struts——Scope属性

    一.概念. 在Action映射配置中,Scope属性可以取值为:request或session.Scope属性表示:Struts框架在将     ActionForm对象(与目标Action匹配的Ac ...

  4. AngularJS中Directive指令系列 - scope属性的使用

    文章是转的,我做下补充.原文地址:https://segmentfault.com/a/1190000002773689 每当一个指令被创建的时候,都会有这样一个选择,是继承自己的父作用域(一般是外部 ...

  5. spring中bean的scope属性理解

    bean的scope属性有prototype,singleton,request, session几个属性 spring和struts2整合的时候,struts2的action要配置成scope=&q ...

  6. 【Spring源码解读】bean标签中的属性(一)你可能还不够了解的 scope 属性

    scope 属性说明 在spring中,在xml中定义bean时,scope属性是用来声明bean的作用域的.对于这个属性,你也许已经很熟悉了,singleton和prototype信手捏来,甚至还能 ...

  7. Spring中bean作用域属性scope

    关键字: spring中属性scope的prototype是什么意思   默认情况下,从bean工厂所取得的实例为Singleton(bean的singleton属性) Singleton: Spri ...

  8. JSP中scope属性 scope属性决定了JavaBean对象存在的范围

    scope属性决定了JavaBean对象存在的范围. scope的可选值包括: ---page(默认值) ---request ---session ---application   1.page范围 ...

  9. JSTL中的TLD配置和使用。

    一,JSTL介绍: JSTL标签库,是日常开发经常使用的,也是众多标签中性能最好的.把常用的内容,放在这里备份一份,随用随查.尽量做到不用查,就可以随手就可以写出来.这算是Java程序员的基本功吧,一 ...

随机推荐

  1. Bitmap旋转方法

    最近在做一个ORC图片解析的功能,要求解析出数字 但是发现他解析只能解析横着的图片,然后我拍照的时候拍的是竖直照片,当然你也可以去旋转照相机的屏幕 但是我这里为了方便选择的是竖直拍出来 然后,旋转下咯 ...

  2. 课时9—popup

    内容比较多的时候可以全屏显示,用第一种实现方式,如图1 图1 内容较少的话可以使用第二种实现方式如图2:图2 具体的实现代码如下: .header,.footer,.wrap-page{ positi ...

  3. JDK注解替代Hibernate的Entity映射

    1.在entity(实体类)模块中使用注解 1_1.注解的位置出现在 [类定义的前面] 和 [属性的get方法前面] [属性的get方法前面] Java代码: package app.entity; ...

  4. logistic回归模型

    一.模型简介 线性回归默认因变量为连续变量,而实际分析中,有时候会遇到因变量为分类变量的情况,例如阴性阳性.性别.血型等.此时如果还使用前面介绍的线性回归模型进行拟合的话,会出现问题,以二分类变量为例 ...

  5. ssh和putty

    SH(Secure Shell的缩写),由 IETF 的网络工作小组(Network Working Group)所制定:SSH 为建立在应用层和传输层基础上的安全协议.SSH 是目前较可靠,专为远程 ...

  6. Asp.net图片文件上传

    对课本上的代码进行了一点的优化 1.获取文件的名称和文件的后缀名 引用了System.IO, 用Path.GetFileNamehe()取得文件名和Path.GetExtension获取文件的后缀 2 ...

  7. 分治法求2n个数的中位数

    问题:设X[0:n-1]和Y[0:n-1]为两个数组,每个数组中含有n个已排好序的数.试设计一个O(logn)时间的分治算法,找出X和Y的2n个数的中位数 思想: 对于数组X[0:n-1]和Y[0:n ...

  8. 【BZOJ】2719 银河之星

    可以将棋子分为9种类型.且可以通过合并使得两个不同种类棋子转换为另一种棋子(不过要注意棋盘大小,有的时候硬要合并会到棋盘外面,可以先把棋盘全部转换,然后枚举每一个棋子的转换).然后把状态压成一个十位的 ...

  9. Visual Studio 拓展插件——Image Optimizer

    一句话概括效用:在Visual Studio的解决方案中,为图片或包含图片的文件夹添加右键菜单,可对图片进行压缩,无损压缩. 在VS扩展工具中安装 安装好后在VS资源管理器中选择图片右键,在右键菜单中 ...

  10. 快速分析apk工具aapt的使用

    前面walfred已经介绍了使用apktool对apk进行逆向编译,通过apktool我们的确可以反编译已经序列化后的AndroidManifest.xml和资源文件等等,但是有没有一种快速有效的工具 ...