获取JavaBean的属性
- 以前在JSP页面获取JavaBean的数据是这样子的:
- 1.jsp页面Session存进一个Person对象,设置age的属性为22
<jsp:useBean id="person" class="domain.Person" scope="session"/> <jsp:setProperty name="person" property="age" value="22"/>
在2.jsp中取出Session的属性
<% Person person = (Person) session.getAttribute("person"); System.out.println(person.getAge()); %>
效果如下
现在我使用了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); %>