*EL表达式介绍及作用
获取数据
EXpression Language(表达式语言),主要是替换JSP页面中的脚本表达式,以从各种类型的web域中检索Java对象、获取数据。(某个web域中的对象、访问JavaBean的属性、访问list集合、访问map集合、访问数组)
获取web开发常用对象
# EL表达式定义了一些隐式的对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
调用Java方法
# EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。
*EL表达式语法:
${变量名}
EL用法
1.EL表达式语句在执行时,会调用pageContext.findAttribute方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应的对象,找不到则返回""(注意,不是null,而是空字符串)。EL表达式${XXX}会先看XXX是不是EL表达式的隐式对象,是就直接返回隐式对象的引用,不是就翻译成pageContext.findAttribute("XXX")。
2.EL表达式也可以很轻松获取JavaBean的属性,或获取数组,Collection、Map类型集合的数据,例如:
${user.address.city}
${user.list[0] }:访问有序集合某个位置的元素。
${map.key}:获得map集合中指定key的值。
3.集合JSTL的foreach标签,使用EL表达式也可以很轻松迭代各种类型的数组或集合,示例:
#迭代数组
#迭代Collection类型集合
#迭代map类型集合
<%@page import="com.yyz.Address"%> <%@page import="com.yyz.Person"%> <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>el表达式获取数据示例</title> </head> <body> <% request.setAttribute("name","aaa"); %> ${name } <%--pageContext.findAttribute("name") --%> <br/><hr><br/> <!-- 在jsp页面中,使用el表达式可以获取bean的属性 --> <% Person p = new Person(); p.setAge(12); request.setAttribute("person",p); %> ${person.age } <br/><hr><br/> <!-- 在jsp页面中,使用el表达式可以获取bean中的bean(中的bean。。。)的属性 --> <% Person person = new Person(); Address address = new Address(); person.setAddress(address); request.setAttribute("person",person); %> ${person.address.name } <br/><hr><br/> <!-- 在jsp页面中,使用el表达式获取list集合中指定位置的数据 --> <% Person p1 = new Person(); p1.setName("aa111"); Person p2 = new Person(); p2.setName("bb"); List list = new ArrayList(); list.add(p1); list.add(p2); request.setAttribute("list",list); %> ${list[1].name } <!-- 取list指定位置的数据 --> <!-- 迭代集合 --> <c:forEach var="person" items="${list}"> ${person.name } </c:forEach> <br/><hr><br/> <!-- 在jsp页面中,使用el表达式获取map集合的数据 --> <% Map map = new HashMap(); map.put("a","aaaaxxx"); map.put("b","bbbb"); map.put("c","cccc"); map.put("1","aaaa1111"); request.setAttribute("map",map); %> ${map.c } <!-- 根据关键字取map集合的数据 --> ${map["1"] }<!-- 如果Map的关键字是一个数字,则用点运算符搞不定,点运算符搞不定的用中括号运算符 --> <c:forEach var="me" items="${map}"> ${me.key }=${me.value }<br/> </c:forEach> <br/><hr><br/> </body> </html>