EL表达式的常见用法和说明。(简单易懂)
EL基础语法
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}<br/>
EL从JavaBean中读取数据
从bean中读取数据时,用点运算符(.)直接像取对象属性一样取得数据。
需要注意的是:EL表达式点运算符(.)后面跟的属性名不是类的字段,而是GET/SET访问器去掉前缀的名字。
比如:getName(),取属性时应当使用name,且第一个字母需要小写。
<% user u = new user("张三",20,new Score(88,95,891)); pageContext.setAttribute("stu",u); %> user = ${stu}<br/> score = ${stu.score}<br/> math = ${stu.score.math}<br/>
EL从数组中读取数据
从数组中读取数据直接使用索引即可,和常规数组用法相同。
<% int[] number = new int[]{1,2,3}; pageContext.setAttribute("number",number); %> first = ${number[0]}<br/> third = ${number[2]}<br/>
EL从List中读取数据
从list中读取数据时可以直接使用索引读取。
<% List<Integer> nums = new ArrayList<Integer>(); nums.add(Integer.valueOf("100")); nums.add(200); nums.add(new Integer(300)); pageContext.setAttribute("num",nums); %> first = ${num[0]}<br/> second = ${num[1]}<br/> third = ${num[2]}<br/>
EL从Map中读取数据
从Map中读数据,可以直接使用点运算符(.)。
key充当属性的作用,且EL表达式可以自动转型,以适应原始类型。
<% Map<String,Object> map = new HashMap<String,Object>(); 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}<br/> 李四 = ${map.李四.score}<br/> 王五 = ${map.王五}<br/> fruit = ${map.fruit}<br/>