EL表达式语法
${ EL expression}
其中:
$ 表示EL表达式的开始。
EL expression指定表达式。
EL操作符
- “.”操作符
用来访问对象的某个属性,如${user.name} - "[]"
用来访问对象的某个属性,如${user['name']}
更多作用
(1) 属性名中包含 . -等特殊字符,此时只能使用'[]'
(2) 访问数组 ${arr[1]}
(3) 动态访问 ${user[x]} x是变量 改变x即可
算术表达式
“+”,“-”、“*”、“/”、div、“%”或mod
${1+1 }<br><!-- 输出:2 -->
${'1'+1.1 }<br><!-- 输出:2.1 -->
关系操作符
==(eq) !=(ne) >(gt) <(lt) >=(ge) <=(le)
${"a"=="a"} ${"a"eq"a"} true
逻辑操作符
&& || !
empty操作符
<!-- empty操作符 -->
${empty s }<br><!-- 输出:true -->
${!empty s }<br><!-- 输出:false -->
${not empty s }<br><!-- 输出:false -->
${!not empty s }<br><!-- 输出:true -->
EL内置对象
- 域对象
<%
pageContext.setAttribute("a", "1");
request.setAttribute("a", "2");
session.setAttribute("a", "3");
application.setAttribute("a", "4");
%>
${pageScope.a }<!-- 输出:1 -->
${requestScope.a }<!-- 输出:2 -->
${sessionScope.a }<!-- 输出:3 -->
${applicationScope.a }<br><!-- 输出:4 -->
${a }<!-- 输出:1 -->
${a }底层使用pageContext.findAttribute(“a”),依次从page、request、session、application的域范围中寻找”a”属性,如果都没有则返回null 。
- param paramValues
<!-- 这里使用get的提交方式测试,直接在URL中拼接参数。
(请求路径:http://localhost:8080/web上下文路径/index.jsp?name=zhang&hobby=篮球&hobby=足球)
-->
${param.name }<br><!-- 输出:zhang -->
${param.hobby }<br><!-- 输出:篮球 -->
${paramValues.name }<br><!-- 输出:[Ljava.lang.String;@7c244cff -->
${paramValues.name[0] }<br><!-- 输出:zhang -->
${paramValues.hobby }<br><!-- 输出:[Ljava.lang.String;@5ae7ad90 -->
${paramValues.hobby[1] }<br><!-- 输出:足球 -->
${param.xxx } 相当于reuqest.getParameter(“xxx”);
${paramValues.xxx } 相当于reuqest.getParameterValues(“xxx”);
- header headerValues
${header.accept }<br>
<!-- 输出:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,
image/apng,*/*;q=0.8 -->
\${header.accept-Encoding }<br>
<!-- 输出:\${header.accept-Encoding },需要注意(输出中不会输出"\",因为我不这样写,会直接报
异常),"-"被解析成减号,导致抛出异常,在语句最前面写上"\",转义$符号,就可以将语句原样输出 -->
${header['accept-Encoding'] }<br><!-- 输出:gzip, deflate, br -->
${headerValues['accept-Encoding'] }<br><!-- 输出:[Ljava.lang.String;@2f08b521 -->
${headerValues['accept-Encoding'][0] }<br><!-- 输出:gzip, deflate, br -->
- 其他
<!-- 输出上下文路径 -->
${pageContext.request.contextPath }
<!-- 输出cookies -->
${cookie }
<!-- 输出:{JSESSIONID=javax.servlet.http.Cookie@5197416d,
Webstorm-77d15532=javax.servlet.http.Cookie@3f5b951a,
Webstorm-6c1ac651=javax.servlet.http.Cookie@536cda57} -->
EL获取数据
<%
Map<String, User> umap = new HashMap<String, User>();
umap.put("user1", new User("zhang",18));
umap.put("user2", new User("xiao",36));
pageContext.setAttribute("umap", umap);
%>
${umap }<br><!-- 输出:{user1=User [name=zhang, age=18], user2=User [name=xiao, age=36]} -->
${umap.user2 }<br><!-- 输出: User [name=xiao, age=36] -->
${umap.user1.age }<br><!-- 输出:18 -->
${umap['user2'].name }<br><!-- 输出:xiao 需注意,这种方式要求map的key必须是String类型-->
${umap['user2']['name'] }<br><!-- 输出:xiao -->
${umap['user2']['age'] }<br><!-- 输出:36 -->
${umap['user2'][age] }<br><!-- 不会报错,但什么也获取不到 -->
网友评论