EL:Expression Language(表达式语言)
EL的功能:
替代JSP页面中数据访问时的复杂编码
<!--
EL功能体现:替换小脚本
//在JSP中使用Java脚本的局限
//在JSP页面中嵌入大量的Java代码
//访问结构比较复杂的数据时代码烦琐,且经常需要强制类型转换
-->
<%
Employee employee = (Employee) request.getAttribute("employee");
Computer comp = employee.getComputer();
String manufacturer = comp.getManufacturer();
%>
<!-- EL只需要一句,就可以替代java脚本 -->
${requestScope.employee.computer.manufacturer}
EL的特点:
自动转换类型 EL得到某个数据时可以自动转换类型
简单易用
EL的语法:
${ EL expression }
EL的4种取值范围:
pageScope,requestScope,sessionScope,applicationScope
属性范围 | EL中的名称 |
---|---|
page | pageScope |
request | requestScope |
session | sessionScope |
application | applicationScope |
注意:
1、${pageScope.username}表示在page作用域查找变量username,找不到返回null
2、如果在表达式中不标明作用域,则按照page → request → session → application的作用域顺序依次查找,找到即返回,最终找不到返回null
EL取值方式:
1、通过变量名取值:
${变量名} 推荐写为:${作用域.变量名}
2、获取对象的属性值:
<%=((User)request.getAttribute("user")).getName() %>
①、点操作符:${user.name}
②、[]操作符:${user["name"]} //注意中括号里的双引号,如果不写则表示变量名
注意:JavaBean中需要有相应getter方法才能用EL表达式这样取值
3、获取集合元素:
List
// 在Servlet或JSP中保存数据
List names = new ArrayList();
names.add(0, "LiYang");
names.add(1,"WangHua");
request.setAttribute("names",names);
// 在JSP中访问数据
姓名:${ names[0] }<br/>
姓名:${ names[1] }<br/>
//注意:使用[ ]指定元素下标
Map
// 在Servlet或JSP中保存数据
Map names = new HashMap();
names.put("one", "LiYang");
names.put("two", "WangHua");
request.setAttribute("names", names);
// 在JSP中访问数据
姓名:${ names.one }<br/>
姓名:${ names["two"] }<br/>
注意:
1、Map建议使用String做key,如果使用纯数值格式则只能使用长整形
Map names = new HashMap();
names.put(1L, "LiYang");
names.put("two", "WangHua");
request.setAttribute("names", names);
2、Map中key的类型:
//对于String类型的key
${names["two"]}和${names.two}
//对于Long类型的key仅可使用
${names[1]}
执行表达式
关系操作符、逻辑操作符、empty操作符
关系操作符 | 说明 | 示例 | 结果 |
---|---|---|---|
== 或者eq |
等于 | ${23==5} 或${23 eq 5} ${"a" =="a"} 或${"a" eq "a"} |
false true |
!= 或者ne |
不等于 | ${23!=5} 或${23 ne 5} |
true |
< 或者lt |
小于 |
|