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
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支持下表列出的隐含对象:
| 隐含对象 | 描述 |
|---|---|
| pageScope | page 作用域 |
| requestScope | request 作用域 |
| sessionScope | session 作用域 |
| applicationScope | application 作用域 |
| param | Request 对象的参数,字符串 |
| paramValues | Request对象的参数,字符串集合 |
| header | HTTP 信息头,字符串 |
| headerValues | HTTP 信息头,字符串集合 |
| initParam | 上下文初始化参数 |
| cookie | Cookie值 |
| pageContext | 当前页面的pageContext 获取jsp中的其他隐含对象 |
您可以在表达式中使用这些对象,就像使用变量一样