概念
- Expression Language 表达式语言
- 语法:${变量名}
- 本质:简化域对象getAttribute()
作用
-
替代JSP页面中数据访问时的复杂编码
-
优化代码(只能在JSP页面内使用)
-
优化在哪?
<%
String name = (String)request.getAttribute("name");
%>
<%=name%>
变成了:
${name}
- 取的是attribute域对象中保存的数据(page、request、session、application)
使用
-
默认查找优先级(同key):pageContext>request>session>application
-
指定作用域进行查找
- ${pageScope.name}
- ${requestScope.name}
- ${sessionScope.name}
- ${applicationScope.name}
-
也可以使用别的包的类,比如自己new一个user,然后${user.name}
- 底层:out.write(((User)pageContext.getAttribute(“user”)).getId());
-
不仅可以get,还可以set——${user.id=3}(但是用的少,一般只是拿来读)
-
可以取级联——${user.address.value}
-
与方法绑定,不是与属性关联(属性私有,通过反射访问),在【方法区】找数据,不是【堆】
- 即使 getNum(){return this.id} 也可以正常返回
-
还有另一种语法:${user[“name”]} (一般不用)
-
取集合——$ {list[0].id} 、${list[1].name} …
执行表达式
-
boolean类型
-
大小比较
- {num1>num2} => true
- {num1}>{num2} => 10>9
-
逻辑运算
- {num1 && num2} => true
- {num1 and num2} => true
- {empty num3} => true 长度为0的String,size为0的集合