EL表达式

1.概述

  1. Expression Language 表达式语言

  2. 作用:替换和简化jsp页面中Java代码的编写

  3. 语法:${ EL表达式 }

  4. 注意:jsp默认支持EL表达式,可以设置不解析表达式

    方法一:设置jsp中page指令中的:isELIgonred=”true”,忽略当前jsp页面中的所有EL表达式

    方法二: \${EL表达式} 忽略当前这个EL表达式

2.EL运算符

  1. 算术运算符:+ - * /(div) %(mod)

  2. 比较运算符:> < >= <= == !=

  3. 逻辑运算符:&&(and) ||(or) !(not)

  4. 空运算符:empty 用于判断字符串、集合、数组对象是否为null并且长度是否为0

    ${empty str}

    ${not empty str}

3.EL获取值

  1. EL表达式只能从域对象中获取值

  2. **语法一:${域名称.键名}**,从指定域中获取指定键的值,如果获取不到则不会显示任何内容(空字符串)

    • pageScope——->pageContext域

    • requestScope——>request域

    • sessionScope——>session

    • applicationScope——>application(servletContext)

    • 举例:在pageContext中存储,pageContext.setAttribute(“msg”,”hxx”);

      ​ 获取值,**${pageScope.msg}**

  3. **语法二:${键名}**,表示依次从最小的域中查找是否又该键对应的值,直到找到为止。

  4. 获取对象的值,对象的属性来获取,${域名称.键名.属性名},本质上会调用对象的getter方法

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    public class User {
    private Date date;
    /*
    * 逻辑视图
    * */
    public String getBirStr(){
    if (date!=null){
    //格式化日期对象
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
    //返回字符串
    return sdf.format(date);
    }else return null;
    }
    }
    <%--通过对象的属性来获取--%>
    <%
    User user = new User();
    user.setDate(new Date());
    request.setAttribute("u",user);
    %>
    ${u.birStr}
  5. List集合:${域名称.键名[索引]},越界时不显示任何内容

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <%
    List list = new ArrayList();
    list.add("hxxx");
    list.add(user);
    request.setAttribute("l",list);
    %>
    ${requestScope.l}<br>
    ${l[0]}<br>
    <%--越界什么都不显示--%>
    ${l[10]}<br>
    ${l[1].date}<br>
  6. Map:**${域名称.键名[“key名称”]} 或 ${域名称.键名.key名称}**

    1
    2
    3
    ${requestScope.m}<br>
    ${m.name}<br>
    ${m["name"]}

4.隐式对象

  1. EL表达式中有11个隐式对象

  2. pageContext

    • 获取jsp其他八个内置对象
    1
    2
    <%--在jsp中动态获取虚拟目录--%>
    ${pageContext.request.contextPath}