EL表达式  

EL表达式
 

EL简介

   EL是JSP内置的表达式语言,用以访问页面的上下文以及不同作用域中的对象 ,取得对象属性的值,或执行简单的运算或判断操作。EL在得到某个数据时,会自动进行数据类型的转换。

   EL表达式用于代替JSP表达式(<%= %>)在页面中做输出操作。

   EL表达式仅仅用来读取数据,而不能对数据进行修改。

    使用EL表达式输出数据时,如果有则输出数据,如果为null则什么也不输出。

EL基本使用

   EL表达式总是放在{}中,而且前边有一个$作为前缀。

    ${EL表达式}

   获取域中的对象可以直接使用对象名,如获取域中名字为user的对象

    ${user}

   获取对象的属性值可以直接通过“对象.属性名”

      ${user.name}

     ${user.age}

  注意:这里的属性名是get和set方法对应的属性值,并不是对象中的变量名

       比如:如果获取name属性值,那么该对象中必定要存在一个getName()方法。

 

    获取对象的属性也可以通过“对象[“属性名”]”

       ${user[“name”]}

       ${user[“age”]}

 

     获取Map中属性时可以以直接通过属性的key

       ${map.key}

       ${map[key]}

 

  在指定域中获取属性

     在EL表达式中如果我们直接使用属性名如:${user},它将会在四个域中由小到大依次查找。顺序:pageScope、requestScope、sessionScope、applicationScope。

     也可以指定从哪个域中获取:

       ${ pageScope .user}:当前页面

       ${requestScope.user}:当前请求

       ${sessionScope.user}:当前会话

       ${sessionScope.user}:当前应用

EL隐含对象

 EL中包含11个隐含对象,这些对象可以在EL表达式中直接使用。

  请求域

   请求域主要用于获取域对象中的属性,四个对象分别对应四个请求域。

    pageContext
      类型 PageContext
      它和JSP中pageContext是一个东西
      作用 可以获取到JSP中其他的隐含对象
      例如:可以获取项目名:
      ${pageContext.request.contextPath }

    pageScope
      类型:Map<String,Object>
      代表:page域中的属性
      作用:可以获取到page域中的属性

     requestScope
      类型:Map<String,Object>
      代表:request域中的属性
      作用:可以获取到request域中的属性

     sessionScope
      类型:Map<String,Object>
      代表:session域中的属性
      作用:可以获取到session域中的属性
  
     applicatScope
      类型:Map<String,Object>
      代表:application域中的属性
      作用:可以获取到application域中的属性

  请求参数

  参数对象主要用于获取get或post请求中的参数。

    param
      类型: Map<String , String>
      代表:用户发送的请求参数
      作用:可以获取请求参数
      用法: ${param.参数名}

    paramValues
      类型:Map<String , String[]>
      代表:一个请求参数对应的多个值
      用法: ${paramValues.参数名[索引]}

  其他

    header
      作用:可以获取到用户发送的请求头
      类型:Map<String , String>
      例如:获取用户的系统信息 ${header['User-Agent']}


       headerValues
      类型: Map<String , String[]>
      作用:可以获取一个头的多个值

    initParam;
      类型:Map<String , String>
      作用:获取整个WEB应用的初始化参数

      cookie
      类型:Map<String , Cookie>
      作用:用来获取Cookie

EL逻辑运算

运算符

说明

范例

结果

+

${17+5}

22

-

${17-5}

12

*

${17*5}

85

/或div

${17/5}或${17 div 5}

3

%或mod

取余

${17%5}或${17 mod 5}

2

==或eq

等于

${5==5}或${5 eq 5}

true

!=或ne

不等于

${5!=5}或${5 ne 5}

false

<或lt

小于

${3<5}或${3 lt 5}

true

>或gt

大于

${3>5}或${3 gt 5}

false

<=或le

小于等于

${3<=5}或${3 le 5}

true

>=或ge

大于等于

${3>=5}或${3 ge 5}

false

&&或and

并且

${true&&false}或${true and false}

false

!或not

${!true}或${not true}

false

||或or

或者

${true||false}或${true or false}

true

empty

是否为空

${empty “”},可以判断字符串、数据、集合的长度是否为0,为0返回true。empty还可以与not或!一起使用。${not empty “”}

true