EL表达式及${对象}

JSTL 的发布包有两个版本: Standard-1.0 Taglib 、 Standard-1.1 Taglib ,它们在使用时是不同的。

Sun 发布的标准JSTL1.1 标签库有以下几个标签:

       核心标签库:包含 Web 应用的常见工作,比如:循环、表达式赋值、基本输入输出等。

       国际化标签库:用来格式化显示数据的工作,比如:对不同区域的日期格式化等。

       数据库标签库:可以做访问数据库的工作。

       XML 标签库:用来访问 XML 文件的工作,这是 JSTL 标签库的一个特点。

       函数标签库:用来读取已经定义的某个函数。

此外, JSTL 还提供了 EL 表达式语言( Expression Language )来进行辅助的工作。


一、EL表达式

1、表达式与java无关,表达式都是以 ${ 开始,以 } 结束。

2、EL访问java变量不能直接访问,因为得不到数据,要访问数据,需要将其放到作用域中。例如访问String str=”abc”,我们不能通过${str}直接访问,因为获取不到,我们可以这样访问:pageContext.setAttribute(“a”,str);获取方式${a},与java表达式不同的是,当str=null时,该获取方式获取不到null,而是什么东西都不显示。
3、实例代码:
request.setAttribute("aaa","wuxin");  ${requestScope.aaa }
访问javaBean:${隐式对象.id号.属性名字 } 例如${sessionScope.user.userName }
4、在EL表达式中定义的变量我们不能使用。
5、要直接从表单中获取值,使用${param.控件名字}
6、获取值的几种方式: ${“23”+3}得到的结果为26,${“23s”+3}报错
7、打开或者禁用EL表达式:使用isELIgnored=”true(禁用)/false(支持)”

8、${这个里面不能使用java代码,否则会报出服务器的500异常}

9、若要在页面显示El表达式,在EL表达式的前面加上一个反斜杠,例如:\${1.2+4.5}

二、${对象}

       EL表达式获取对象属性的原理是这样的:以表达式${user.name}为例,EL表达式会根据name去User类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀,一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值。所以,想要通过EL表达式获取对象属性的值,那么这个属性就必须有与之对应的get方法。

       其实你要了解EL表达式的运行原理,它其实后台也对应的java代码,它会先将你EL表达式中的对象属性的首字符大写,拼成getXX()方法,然后利用反射将对象构建出来,然后再执行getXX()方法,所以这中间不关私有属性的事,调用的是私有属性的get/set方法。如果你不写get/set方法,那EL表达式就拿不到值了。set方法是给你后台设置值用的。


参考文献:

1、http://www.cnblogs.com/HD/p/3630091.html

2、http://www.blogjava.net/supercrsky/articles/179363.html

3、http://blog.csdn.net/wodet_t/article/details/47042435


你可能感兴趣的:(El表达式)