下面主要是我在应用EL表达式时的一些体会,特此写出,供同志们温习一下我们的EL表达式。
目的
和标签一样,EL表达式出现的目的也是为了简化JSP页面,取代JSP中的JAVA代码使JSP成为纯标记文档,以增加JSP的易读性,维护性。EL表达式能简化JSP文件中数据访问的代码,可用来替代传统的基于“<%= %>”形式的JAVA表达式,以及部分基于“<% %>”形式的JAVA程序片断。
基础
在EL表达式中能用哪些操作符?算术,关系,逻辑,empty和条件操作符。在EL表达式中有多少隐含对象?11个隐含对象。网上均有资料,在此不再列举具体的操作符和隐含对象。
命名变量
EL表达式中的变量称为命名变量,它不是JSP文件中的局部变量或实例变量。而是存放在特定范围内的属性,也就是说EL表达式只能取得利用setAttribute(String name)方法存储在某一范围内的值。找到之后直接返回,找不到返回NULL。
“.”和“[]”
它们虽然都能访问对象的属性,但还是有些区别的。假设在request范围内有一个变量user,而这个变量有一个属性name。下面两种写法效果是一样的。
${requestScope.user.name} ${requestScope.user[“name”]}
1.动态取值
<%String date = “name”;%>
那么前面的
${requestScope.user[“name”]}
就可以变成
${requestScope.user[date]}
而${requestScope.user.date}
就不行,它只会去找user对象内的date属性,如果有会取出date属性值并输出,而不是name属性值,如果没有就会返回NULL,但并不输出任何字符。
2.通过索引取得数组中的值。
自动转换类型
JAVA有5种操作符,它们分别是算术,比较,逻辑,赋值,位操作符,几乎所有的操作符只能用来操作“基本类型”。唯一例外的是“=”,“!=”和“==”,它们可操作所有的对象,除此之外,String类支持“+”和“+=”。上述是对JAVA操作符的总体描述,但上句在EL表达式中并不适用或者说部分缺失。在上面我们介绍过EL表达式有5种操作符,它们分别是算术,关系,逻辑,empty和条件操作符。与JAVA语法不同的是EL表达式中的String类型并不支持“+”和“+=”。如${“1”+”2”}得到的结果则是3,因为这里出现的“+”就是算术操作符,“1”和“2”会先转换成数值型再相加。由此可见EL表达式的自动转换类型与操作符有关,EL表达式会根据操作符自动转换类型,有点像脚本语言中的弱类型。在这里还有一点要注意${‘a’+2}这样的写法是错误的,因为这里的’a’会被看作String类型。