日期:2014-05-16  浏览次数:20402 次

JSP_EL使用

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”。