日期:2014-05-16 浏览次数:20444 次
JSP中EL表达式的简单介绍和使用
?
参考资料:
http://www.java3z.com/cwbwebhome/article/article8/8124.html?id=2453
?
http://www.blogjava.net/rabbit/archive/2010/01/22/310560.html
?
?
写在前面的话:J2ee5默认不支持El表达式,如何开启支持?见我的另一篇文章。
J2EE5(Servlet2.5)对EL表达式的支持
?
?
?
?
1.什么是EL表达式
EL 即 Expression Language (表达式语言)最初是在 JSTL1.0 中定义, JSP2.0 引入,可以和 JSTL 结合使用也可以了 scriptlets 结合使用。
2.常用功能
A.取值(一级或多级)????? B.执行逻辑关系运算
3.EL表达式的取值操作(${ bean.name } 或 ? ${? bean['name'] } )
???? 3.1.${obj}//会自动到内置对象(pageScope,requestScope,sessionScope,applicationScope)里面获取名为“obj”的属性。如同以下代码。在这里如果request和session范围都有一个名为“obj”的属性,那么取到的是request范围内的。也就是说它查找的范围是从小到大,如果找到就不再去大范围内找。如果没有找到,就接着向大的范围搜索,如果最后都找完了,还是没找到,那么就是null,在页面显示的就是空白。 当然这里我们也可以指定范围,例如${sessionScope.userName},这个时候就只会到session里面去搜索,如果找不到就是null。
<%=session.getAttribute("obj")%><jsp:getProperty name="" property=""/>?
?
???? 3.2.${obj.attr1}//这里和上面不同的一点是,它是多级的。也就是说obj这个属性对应的不再是一个简单的字符串(String)或者数字(Integer)(当然这里也会自动装箱拆箱),而是我们自己定义的一个POJO的对象。此时我们用${obj}取到的是obj对应的对象的内存地址,如果要访问他的属性,就按“对象.属性”的方法。如果要获取User这个对象的name属性。$(user.name),这个其实调用的是user.getName()方法。所以我们的POJO要提供相应的getter,这里才能取到。
4.EL表达式的逻辑运算操作(与JSTL条件判断标签结合使用)
${1==2}
${obj1.age>obj2.age && 1>0}
${empty obj.address}${not empty obj.address}
${null==obj}
<c:if test="${null==obj}">
Hello EL!
</c:if>
?条件判断主要是用于判断真假,这里要注意一下“empty”。