EL 全名为Expression Language
作用:从域对象中取值,替换或者简化jsp页面中java代码的编写
EL中的基础操作符
EL表达式支持大部分Java所提供的算术和逻辑操作符:
操作符 | 描述 |
---|---|
. | 访问一个Bean属性或者一个映射条目 |
[] | 访问一个数组或者链表的元素 |
+ | 加 |
- | 减或负 |
* | 乘 |
/ or div | 除 |
% or mod | 取模 |
== or eq | 测试是否相等 |
!= or ne | 测试是否不等 |
< or lt | 测试是否小于 |
> or gt | 测试是否大于 |
<= or le | 测试是否小于等于 |
>= or ge | 测试是否大于等于 |
&& or and | 测试逻辑与 |
|| or or | 测试逻辑或 |
! or not | 测试取反 |
empty | 测试是否空值(字符串,集合,数组是否为null并且长度是否为0) |
获取域对象中的值
语法:${域对象别名.关键字}
JSP域对象名 | EL域对象别名 |
---|---|
application | applicationScope |
request | requestScope |
session | sessionScope |
pageContext | pageScope |
-
获取域对象中的对象值
-
获取域对象中的list集合值
-
获取域对象中的map集合值
<head>
<title>EL表达式的基本使用</title>
</head>
<body>
<%--
el表达式 主要的作用 简化程序员从四大域对象中获取值的过程
语法: ${}
--%>
<%
// 数据准备 在域对象中存储值
pageContext.setAttribute("pageCont", "pageContextValue");
pageContext.setAttribute("request", " pageContextRequestValue");
request.setAttribute("request", "requestValue");
session.setAttribute("session", "sessionValue");
application.setAttribute("application", "applicationValue");
%>
<p>----------------指定域对象获取key对应的值------------------------</p>
<%--指定域对象获取key对应的值--%>
<p>pageContext = ${pageScope.pageCont}</p>
<p>request=${requestScope.request}</p>
<p>session=${sessionScope.session}</p>
<p>application=${applicationScope.application}</p>
<p>----------------不指定域对象获取key对应的值------------------------</p>
<%--不指定域对象获取key对应的值
使用el表达式 在不指定域对象获取key所对应的值时
那么el表达式会依次的从四个对象中去找 先从哪个域对象中找到对应的key 则直接返回
pageScope -> requestScope -> sessionScope -> applicationScope
--%>
<p>pageContext = ${pageCont}</p>
<p>request=${request}</p>
<p>session=${session}</p>
<p>application=${application}</p>
<p>----------------获取的key在四个域对象中都不存在------------------------</p>
<%--获取的key在四个域对象中都不存在--%>
<p>aa=${aa}</p>
</body>
<head>
<title>EL表达式处理复杂类型的值</title>
</head>
<body>
<%
// 简单类型的值 String
request.setAttribute("str", "stringValue");
// 对象类型 User
//User user = new User();
//user.setAge(20);
//user.setUsername("Tom");
User user = new User("jack", 30);
request.setAttribute("user", user);
// 数组类型
int[] numbers = new int[]{1,2,3,4,5};
request.setAttribute("array", numbers);
// 集合类型 List<String> List<User>
ArrayList<String> list = new ArrayList<>();
list.add("aa");
list.add("bb");
list.add("cc");
list.add("dd");
request.setAttribute("list", list);
ArrayList<User> users = new ArrayList<>();
users.add(user);
users.add(user);
users.add(user);
users.add(user);
request.setAttribute("users", users);
// Map
HashMap<String, Object> map = new HashMap<>();
map.put("username", "admin");
map.put("password", "123456");
request.setAttribute("map", map);
%>
<p>----------------简单数据类型----------------------</p>
<p>str = ${str}</p>
<p>----------------User对象数据类型----------------------</p>
<p>str = ${user}</p>
<ul>
<%--
User -> getUsername() getUname()
user.uname uname 代表的并不是user类中的属性 在获取值时 找的时当前key对应的get方法 user.uname getUname
--%>
<li>${user.username}</li>
<li>${user.age}</li>
</ul>
<p>----------------数组类型的值----------------------</p>
<p>array=${array}</p>
<ul>
<li>${array[0]}</li>
<li>${array[1]}</li>
<li>${array[2]}</li>
<li>${array[3]}</li>
<li>${array[4]}</li>
</ul>
<p>----------------list集合类型的值----------------------</p>
<p>array=${list}</p>
<ul>
<li>${list.get(0)}</li>
<li>${list.get(1)}</li>
<li>${list.get(2)}</li>
<li>${list.get(3)}</li>
</ul>
<p>users=${users}</p>
<p>user = ${users.get(0).username}</p>
<p>user = ${users.get(0).age}</p>
<p>user = ${users.get(1).username}</p>
<p>user = ${users.get(1).age}</p>
<p>user = ${users.get(2).username}</p>
<p>user = ${users.get(2).age}</p>
<p>----------------map集合类型的值----------------------</p>
<p>array=${map}</p>
<ul>
<li>${map.get("username")}</li>
<li>${map.get("password")}</li>
</ul>
</body>
<head>
<title>EL表达式实现运算</title>
</head>
<body>
<%--数学运算--%>
<p>1+2=${1+2}</p>
<%--关系运算--%>
<p>1<2 = ${1 < 2}</p>
<p>1<2 = ${1 lt 2}</p>
<%--逻辑运算--%>
<p>true&false = ${true and false}</p>
<p>true&false = ${true && false}</p>
</body>
JSP EL隐含对象
JSP EL支持下表列出的隐含对象:
隐含对象 | 描述 |
---|---|
pageScope | page 作用域 |
requestScope | request 作用域 |
sessionScope | session 作用域 |
applicationScope | application 作用域 |
param | Request 对象的参数,字符串 |
paramValues | Request对象的参数,字符串集合 |
header | HTTP 信息头,字符串 |
headerValues | HTTP 信息头,字符串集合 |
initParam | 上下文初始化参数 |
cookie | Cookie值 |
pageContext | 当前页面的pageContext 获取jsp中的其他隐含对象 |
您可以在表达式中使用这些对象,就像使用变量一样