- 现在我使用了EL表达式读取数据又会非常方便了
//等同于person.getAge() ${person.age}
- 上面的代码 等同于调用对象的getter方法,内部是通过反射机制完成的!
获取集合的数据
- 集合操作在开发中被广泛地采用,在EL表达式中也很好地支持了集合的操作!可以非常方便地读取Collection和Map集合的内容
- 为了更好地看出EL表达式的强大之处,我们也来对比一下使用EL表达式和不使用EL表达式的区别
- 下面不使用EL表达式输出集合的元素
- 在1.jsp页面中设置session的属性,session属性的值是List集合,List集合装载的又是Person对象
<% List<Person> list = new ArrayList(); Person person1 = new Person(); person1.setUsername("zhongfucheng"); Person person2 = new Person(); person2.setUsername("ouzicheng"); list.add(person1); list.add(person2); session.setAttribute("list",list); %>
- 在2.jsp中获取到session的属性,并输出到页面上
<% List<Person> list = (List) session.getAttribute("list"); out.write(list.get(0).getUsername() "<br>"); out.write(list.get(1).getUsername()); %>
使用EL表达式又是怎么样的效果呢?我们来看看!
<%--取出list集合的第1个元素(下标从0开始),获取username属性--%> ${list[0].username} <br> <%--取出list集合的第2个元素,获取username属性--%> ${list[1].username}
- 同样也可以有相同的效果:
- 我们再来使用一下Map集合
- 在1.jsp中session属性存储了Map集合,Map集合的关键字是字符串,值是Person对象
<% Map<String, Person> map = new HashMap<>(); Person person1 = new Person(); person1.setUsername("zhongfucheng1"); Person person2 = new Person(); person2.setUsername("ouzicheng1"); map.put("aa",person1); map.put("bb",person2); session.setAttribute("map",map); %>
- 看起来好像取出数据的时候是会有点复杂,但是有了EL表达式也是非常轻松的!
${map.aa.username} <br> ${map.bb.username}
- 效果:
- 如果Map集合存储的关键字是一个数字,就不能使用"."号运算符了,如下所示