EL表达式及${对象}
2016-07-21 15:16
281 查看
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
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
相关文章推荐
- [置顶] 模式识别(Pattern Recognition)学习笔记(三十六)-- 动态聚类算法
- 定时任务基本概念
- 在线程中建立Form遇到的问题
- [Doc ID 1666646.1]如何使用功能管理员清除缓存?
- leetcode237
- 关于宏和函数、内联函数的一些区别
- 文件下载不能使用ajax的替代解决方案
- Jquery 事件冒泡的介绍以及如何阻止事件冒泡
- Android 让自定义TextView的drawableLeft与文本一起居中
- Spring Boot - 构建Spring Boot系统及相关配置详解
- 【理解JVM】 深入分析Java ClassLoader原理
- 筛法求素数
- 简述Java命令行参数、JVM、打包Java程序、JAR文件
- 我所理解的Cocos2d-x Cocos2d-x 内存管理机制
- js事件冒泡,元素中还有其他事件
- jstack对线程信息的分析
- mongoldb学习之初识mongoldb
- 别装了,你根本就不想变成更好的人
- js 把一个函数赋给一个变量时带括号与不带括号的区别
- A - Theatre Square