EL表达式获取域对象

语法:${域对象}
作用:简化jsp代码,用于获取域对象;
注意:EL表达式不能用于获取局部变量,一般都是用于获取域对象的值;
EL默认从小的域对象到大的域对象开始寻找,找到一个域对象就停止;
EL表达式没有找到域对象会默认为空字符串;

EL表达式用于获取不同范围的域对象但其参数名相同(假设都是username)的域对象(尽量不要定义相同名字的域对象):
page域对象:${pageScope.username}
request域对象:${pageScope.username}
session域对象:${sessionScope.username}
application域对象:${applicationScope.username}

实例代码:

  1. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  2. <html>
  3. <head>
  4. <title>EL表达式</title>
  5. </head>
  6. <body>
  7. <%
  8. pageContext.setAttribute("username","wjh01");//设置page域对象
  9. request.setAttribute("username","wjh02");//设置request对象
  10. session.setAttribute("username","wjh03");//设置session对象
  11. application.setAttribute("username","wjh04");//设置application对象
  12. %>
  13. ${message};
  14. </body>
  15. </html>

运行结果:
image.png

EL表达式获取集合类对象

四大域对象还可以是一个集合类对象,用的比较多的就是list集合和map集合,而EL表达也可以获取域对象中的集合类对象。

  1. <%@ page import="java.util.List" %>
  2. <%@ page import="java.util.ArrayList" %>
  3. <%@ page import="java.util.Map" %>
  4. <%@ page import="java.util.HashMap" %><%--
  5. Created by IntelliJ IDEA.
  6. User: 26913
  7. Date: 2021/3/16
  8. Time: 9:18
  9. To change this template use File | Settings | File Templates.
  10. --%>
  11. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  12. <html>
  13. <head>
  14. <title>EL表达式</title>
  15. </head>
  16. <body>
  17. <%
  18. List list01=new ArrayList();//创建ArrayList集合对象
  19. list01.add("wjh01");
  20. list01.add("wjh02");
  21. list01.add("wjh03");
  22. request.setAttribute("list02",list01);
  23. Map map01=new HashMap();//创建HashMap集合对象
  24. map01.put("str0","gsl01");
  25. map01.put("str1","gsl02");
  26. map01.put("str2","gsl03");
  27. request.setAttribute("map02",map01);//注意域对象中代表map01集合的集合是map02,而非map01
  28. %>
  29. 集合list02的长度:${list02.size()}<br>
  30. 集合list02中第0个元素:${list02[0]}<br><br>
  31. 集合map02的长度:${map02.size()}<br>
  32. 集合map02中的第0个元素:${map02.str0}<br>
  33. 集合map02中的第1个元素:${map02["str1"]}<br>
  34. /*
  35. 使用map.key和map.[key]都是可以的
  36. */
  37. </body>
  38. </html>

运行结果:
image.png

EL表达式之empty(或!empty)属性

判断通过EL表达式获取的域对象是否为空的方法是使用empty属性(判断是否非空用!empt),该属性用的很多

  1. <%@ page import="java.util.List" %>
  2. <%@ page import="java.util.ArrayList" %>
  3. <%@ page import="java.util.Map" %>
  4. <%@ page import="java.util.HashMap" %><%--
  5. Created by IntelliJ IDEA.
  6. User: 26913
  7. Date: 2021/3/16
  8. Time: 9:18
  9. To change this template use File | Settings | File Templates.
  10. --%>
  11. <%@ page contentType="text/html;charset=UTF-8" language="java" %>
  12. <html>
  13. <head>
  14. <title>EL表达式</title>
  15. </head>
  16. <body>
  17. <%
  18. request.setAttribute("str01","");
  19. request.setAttribute("str02",null);
  20. request.setAttribute("str03","");
  21. List list01=null;
  22. List list02=new ArrayList();
  23. List list03=new ArrayList();
  24. list03.add(1314520);
  25. Map map01=null;
  26. Map map02=new HashMap();
  27. Map map03=new HashMap();
  28. map03.put(1,"wjh1234");
  29. %>
  30. 判断str是否为空:${empty str}<br> //由于域对象中没有str对象,所有默认str为空字符集
  31. 判断str01是否为空:${empty str01}<br>
  32. 判断str02是否为空:${empty str02}<br>
  33. 判断str03是否为空:${empty str03}<br>
  34. 判断list01是否为空:${empty list01}<br>
  35. 判断list02是否为空:${empty list02}<br>
  36. 判断list03是否为空:${empty list03}<br>
  37. 判断map01是否为空:${empty map01}<br>
  38. 判断map02是否为空:${empty map02}<br>
  39. 判断map03是否为空:${empty map03}<br>
  40. </body>
  41. </html>

运行结果:
image.png

EL表达式之运算符

(1)比较运算符:
<%—
比较两个值是否相等,返回true或false
== 或 eq
—%>
${a == b }
${c == d }
${c eq d }
${a == 5 }
${c == ‘aa’ }

(2)算术运算符:
<%—
加法: +
减法: -
乘法: *
除法: / 或 div
—%>
${a + b }
${a / b } 或 ${a div b }

(3)比较运算符:
<%—
大于:>
小于:<
大于等于:>=
小于等于:<=
—%>
${a > b}
${a + 1 > 10 }
${a + b >= 10 }
${a > b && b > 5 }
${a + b > 10 || a - b > 5 }