El表达式
El表达式
- 传统方式获取作用域数据
- 缺点一:导入包
- 缺点二:需要强转
- 缺点三:获取数据的代码过于麻烦。
什么是EL表达式 全称:Expression Language,一种写法非常简介的表达式。语法 简单易懂,便于使用。表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言
EL表达式的作用 让jsp书写起来更加的方便。简化在jsp中获取作用域或者请 求数据的写法。也会搭配Jstl来进行使用。
El表达式的使用
- 语法结构:${expression},提供.和[ ]两种运算符来存取数据。
- 使用EL表达式获取请求数据
- 请求头数据:
- ${header}–>返回所有的请求头数据
- ${header[“键名”]}—>返回指定的键名的请求头数据
- ${hedaerValues[“键名”]}—>返回指定的键名(同键不同值)的值的数组。
- 获取用户请求数据
- 获取请求数据
- request对象存储了请求数据—>${param.键名} 返回值
- request对象存储了请求数据—>${paramvalues.键名} 返回的是数组
- 获取的是通过setAttribute方法存储到作用域对象中的数据
- ${键名} 返回键名所对应的值。
- 注意:如果存储的是普通字符串则直接返回。如果存储的是对象,则返回的是对象
- 获取对象中的数据:
- 普通对象
- ${键名.属性名.属性名….}
- 集合对象
- list集合—>${键名[角标]}
- map集合—>${键名.map集合存储的键名}
- 普通对象
- 获取请求数据
- 获取Cookie数据
- ${cookie}—>返回存储了所有的cookie对象的map集合
- ${cookie.键名}—->返回指定的cookie对象
- ${cookie.键名.name}—>返回指定的cookie对象存储的数据的键名。
- ${cookie.键名.value}—>返回指定的cookie对象存储的数据的值。
- 请求头数据:
- 使用EL表达式获取作用域数据
- 获取作用域数据
- ${键名}
- 作用域查找顺序
- 默认查找顺序:pageConext–>request—>session—>application
- 注意:每次查找都是从小到大进行查找,找到了则获取,不再继续找了。
- 指定查找
- ${pageScope.键名}—${requestScope.键名}–${sessionScope.键名}–${applicationScope.键名}
- 注意:获取的是pageContext、request、session、application四个对象中的数据,其他数据一概不理会。找到了则获取返回,找不到则什么都不做,也不报错。
- 获取作用域数据
- 使用EL表达式进行运算
- 逻辑运算
- ${逻辑表达式}:&& || !
- 算术运算
- ${算术表达式}:+,-,*,/
- 关系运算
- ${关系表达式}:>,<,>=,==,!=,%
- 特殊:三目运算
- 注意:+表示加法运算,不表示字符链接。使用EL表达式进行字符链接会报错。
- EL的空值判断:
- ${empty 键名}
- 作用:判断键名对象的值是否存有数据。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45<%import="com.kylin.pojo.User"%>
<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>
<!-- 使用传统方式获取作用域对象的数据 -->
<h3>EL表达式学习:使用传统方式获取作用域对象的数据</h3>
<b><%=request.getParameter("uname") %></b><br>
<b><%=request.getAttribute("str") %></b><br>
<b><%=((User)request.getAttribute("user")).getAddr().getTown() %> </b><br>
<b><%=((ArrayList)request.getAttribute("list")).get(2) %> </b><br>
<b><%=((User)(((ArrayList)request.getAttribute("list2")).get(0))).getAddr().getPre() %></b><br />
<b><%=((HashMap)request.getAttribute("map")).get("c") %></b><br />
<b><%=((User)(((HashMap)request.getAttribute("map2")).get("a1"))).getAddr().getCity() %></b><br />
<%
String str2="哈哈哈";
%>
<!-- 使用EL表达式获取作用域对象数据 -->
<h3>EL表达式学习:使用EL表达式获取作用域对象的数据</h3>
<b>${param.uname}</b><br />
<b>${paramValues.fav[0]}</b><br />
<b>${str}</b><br />
<b>${user}</b><br />
<b>${list[2]}</b><br />
<b>${list2[0].addr.pre}</b><br />
<b>${map.c}</b><br />
<b>${map2.a1.addr.city}</b><br />
<b>${str2}</b>
<hr />
<h3>EL的作用域查找顺序</h3>
<%
pageContext.setAttribute("hello","hello pageContext");
request.setAttribute("hello","hello request");
session.setAttribute("hello","hello session");
application.setAttribute("hello","hello application");
%>
${hello}<br>
${pageScope.hello}----${requestScope.hello}----${sessionScope.hello}------${applicationScope.hello}
<h3>EL表达式的逻辑运算</h3>
${1+2}--${1*2}--${4/2}--${4-2}--${4%3}--${4==4}--${4>2}--${sex==1?'男':'女'}--${1+'2'}
<h3>EL表达式的空值判断</h3>
${empty s}--${empty s1}--${empty s2}---${empty s3}
<h3>EL获取请求头数据和Cookie数据</h3>
${header}--${headerValues["accept-language"][0]} <br /><br /><br />
${cookie}--${cookie.JSESSIONID}---${cookie.JSESSIONID.name}--${cookie.JSESSIONID.value}
- 逻辑运算
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Kylin!
评论