目录
EL基础语法
EL从JavaBean中读取数据
EL从数组中读取数据
EL从List中读取数据
EL从Map中读取数据
EL表达式只能读数据,不能修改数据。
EL表达式只能出现在静态部分,不能出现在java代码块中。
EL表达式不会抛出异常,在出现异常时,EL表达式将会以空白显示。
表达式只能从四大域中读取数据。
如果四大域内中有相同属性名,那么EL表达式将会从最小范围的域依次往最大域查找,page -> application
查找到相关内容后将会停止查找,并显示查找到的第一条数据。
<%
//pageContext.setAttribute("number","one");
request.setAttribute("number","two");
session.setAttribute("number","three");
application.setAttribute("number","four");
%>
name = ${number}
从bean中读取数据时,用点运算符(.)直接像取对象属性一样取得数据。
需要注意的是:EL表达式点运算符(.)后面跟的属性名不是类的字段,而是GET/SET访问器去掉前缀的名字。
比如:getName(),取属性时应当使用name,且第一个字母需要小写。
<%
user u = new user("张三",20,new Score(88,95,891));
pageContext.setAttribute("stu",u);
%>
user = ${stu}
score = ${stu.score}
math = ${stu.score.math}
从数组中读取数据直接使用索引即可,和常规数组用法相同。
<%
int[] number = new int[]{1,2,3};
pageContext.setAttribute("number",number);
%>
first = ${number[0]}
third = ${number[2]}
从list中读取数据时可以直接使用索引读取。
<%
List nums = new ArrayList();
nums.add(Integer.valueOf("100"));
nums.add(200);
nums.add(new Integer(300));
pageContext.setAttribute("num",nums);
%>
first = ${num[0]}
second = ${num[1]}
third = ${num[2]}
从Map中读数据,可以直接使用点运算符(.)。
key充当属性的作用,且EL表达式可以自动转型,以适应原始类型。
<%
Map map = new HashMap();
map.put("张三",new user("zhangsan",21,new Score(80,88,90)));
map.put("李四",new user("lisi",22,new Score(89,87,96)));
map.put("王五",new user("wangwu",23,new Score(60,99,75)));
map.put("fruit","banana");
pageContext.setAttribute("map",map);
%>
张三 = ${map.张三.score.chinese}
李四 = ${map.李四.score}
王五 = ${map.王五}
fruit = ${map.fruit}