您的当前位置:首页正文

JSTL中的scope属性

2021-12-05 来源:好走旅游网
JSTL中的scope属性

前两天接到⽼⼤⼀个任务:要验证⼀下能否动态地引⼊不同的⽂件。当时很兴奋,要知道在对⽇外包⾥⾯,这个也得算技术活了。呵呵!

说⼲就⼲,写了两个jsp⽂件:m.jsp test1.jsp。⽬的是⽤变量\"a\"代替test1中的“1”。代码如下:m.jsp

---------------------------------- ----------------------------------test1.jsp

---------------------------------
TEST1
---------------------------------试验之前⽼⼤说估计不⾏,⽽结果却是TEST1

那是不是可以说JSTL(Jsp Standard Taglib Language)是可以解析EL(Express Language)的呢?。我再看了看tomcat⾥⾯work⽬录下编译java⽂件(m_jsp.java⽂件),其实是没编译EL的,即还是把他作为字符串参数传递,⽽在执⾏的时候动态的解析。

说到现在还没说到 的scope属性,别急哈。先谈谈引⼊这个问题的原因:试验结果出乎⽼⼤的意料,他在那JJYY了⼀阵,我在⼀旁偷着乐:哈哈,没搞对吧!没想到他马上⼜说:如果给\"a\"设不同的值,能引⼊不同的⽂件吗? “恩.........,我也不知道”我应到。于是他在我机⼦上写了下⾯的代码:m.jsp

----------------------------------

----------------------------------test1.jsp

---------------------------------
TEST1
---------------------------------test2.jsp

---------------------------------
TEST2
---------------------------------结果如下:TEST11TEST1

1

⽼⼤⽕了,为什么不⾏呢?这次test2.jsp怎么没引⼊进来??“不搞了,看来不⾏”⽼⼤拂袖⽽去,丢了这么⼀句。

“我来搞搞”我⼼理想着,看着他写的代码,伊?怎么m.jsp中第⼆次设值要加⼀个“scope”属性呢?我试着把第次设a的值也加上“scope=\"request\"”,跑了跑。结果:TEST11TEST22

我很激动,马上报告⽼⼤。⽼⼤过来看了看,他也觉得奇怪啊,然后他把两⾏代码的scope都去掉,结果和都加上scope是⼀样的。我和⽼⼤现在都想不通了,于是⽼⼤去找了他的⽼⼤(呵呵,某部的部长)!

 果然是⽼⼤的⽼⼤啊,看了不到⼀分钟。马上就解释了原因:默认下scope属性值是\"page\",   var=\"a\" value=\"2\" scope=\"request\"/>是申明了两个的不同作⽤域的变量,我们可以称为page.a ,request.a。引⼊时,肯定是先在当前页⾯找a的值了,找不到的话再去找request作⽤域的a,如果找到了,当然就不⽤去更⼤的作⽤域找了。 听到这,⽼⼤汗.....;我更汗.........。看来⾃⼰现只能是个⼩兵⽔平哈。总结:

  1.scope的作⽤域⼤⼩依次为:application>session>request>page(默认)  2.jsp处理变量的作⽤域先后依次为:page(默认)->request->session->application

因篇幅问题不能全部显示,请点此查看更多更全内容