EL表达式

一、问题

在servlet进行请求处理后,使用作用域对象作为数据流转的载体,将数据流转给对应的jsp文件。
那么怎么在jsp中获取作用域中的数据呢?

二、解决方法

  1. 传统方式:在jsp页面中使用java脚本段语句。
    缺点:导入包。需要强转。获取数据的代码过于麻烦。
  2. 使用EL表达式获取作用域数据
    作用:让jsp书写起来更加的方便。简化在jsp中获取作用域或者请求数据的写法。也会搭配jstl来进行使用

三、语法结构

${expression}提供.和[]两种运算符来存取数据

四、使用

  1. 使用EL表达式获取作用域对象数据。
    注意,获取的是pageContent、request、session、application四个对象中的数据,其他数据一概不理会。找到了则获取返回,找不到则什么都不做,不会报错。
  2. 语法:${表达式}
    表达式:
    获取请求数据
  • request对象存储了请求数据-->${param.键名} 返回值
  • request对象存储了请求数据-->${paramvalues.键名} 返回的是数组

通过setAttribute方法存储到作用域对象中的数据,直接通过键名取值。

  • 如果存储的是普通字符串直接返回
  • 如果存储的是对象,则返回对象。获取对象中数据${键名.属性名.属性名.....}。如果是list集合对象${键名[索引]},map集合${键名.属性名.属性名.....}

五、EL表达式的作用域查找顺序

默认:

  • 按照作用域从小到大顺序找pageContext->request->session->application。找到则返回。

指定查找:

  • ${pageScope.键名}------->${requestScope.键名}------->${sessionScope.键名}----->${applicationScope.键名}

六、EL表达式的逻辑运算

${逻辑表达式|算数表达式}
注意:+只表示加法运算,不表示字符连接。EL表达式不用来进行字符连接。

七、EL空值判断

${empty 键名}。判断键名对应的值是否存有数据。

八、EL获取请求头数据和Cookie数据

  1. 获取请求头数据
  • ${header} 返回所有的请求头数据
  • ${header["键名"]} 返回指定键名的请求头数据
  • ${headervalues["键名"]} 返回指定键名(同键不同值)的值的数组
  1. 获取Cookie数据
  • ${cookie} 返回存储了所有cookie对象的map集合
  • ${cookie.JSESSIONID} 返回指定的cookie对象
  • ${cookie.JSESSIONID.name} 返回指定的cookie对象存储的数据的键名
  • ${cookie.JSESSIONID.value} 返回指定的cookie对象存储的数据的值
原文地址:https://www.cnblogs.com/ylcc-zyq/p/12547230.html