一、问题
在servlet进行请求处理后,使用作用域对象作为数据流转的载体,将数据流转给对应的jsp文件。
那么怎么在jsp中获取作用域中的数据呢?
二、解决方法
- 传统方式:在jsp页面中使用java脚本段语句。
缺点:导入包。需要强转。获取数据的代码过于麻烦。 - 使用EL表达式获取作用域数据
作用:让jsp书写起来更加的方便。简化在jsp中获取作用域或者请求数据的写法。也会搭配jstl来进行使用
三、语法结构
${expression}提供.和[]两种运算符来存取数据
四、使用
- 使用EL表达式获取作用域对象数据。
注意,获取的是pageContent、request、session、application四个对象中的数据,其他数据一概不理会。找到了则获取返回,找不到则什么都不做,不会报错。 - 语法:${表达式}
表达式:
获取请求数据
- request对象存储了请求数据-->${param.键名} 返回值
- request对象存储了请求数据-->${paramvalues.键名} 返回的是数组
通过setAttribute方法存储到作用域对象中的数据,直接通过键名取值。
- 如果存储的是普通字符串直接返回
- 如果存储的是对象,则返回对象。获取对象中数据${键名.属性名.属性名.....}。如果是list集合对象${键名[索引]},map集合${键名.属性名.属性名.....}
五、EL表达式的作用域查找顺序
默认:
- 按照作用域从小到大顺序找pageContext->request->session->application。找到则返回。
指定查找:
- ${pageScope.键名}------->${requestScope.键名}------->${sessionScope.键名}----->${applicationScope.键名}
六、EL表达式的逻辑运算
${逻辑表达式|算数表达式}
注意:+只表示加法运算,不表示字符连接。EL表达式不用来进行字符连接。
七、EL空值判断
${empty 键名}。判断键名对应的值是否存有数据。
八、EL获取请求头数据和Cookie数据
- 获取请求头数据
- ${header} 返回所有的请求头数据
- ${header["键名"]} 返回指定键名的请求头数据
- ${headervalues["键名"]} 返回指定键名(同键不同值)的值的数组
- 获取Cookie数据
- ${cookie} 返回存储了所有cookie对象的map集合
- ${cookie.JSESSIONID} 返回指定的cookie对象
- ${cookie.JSESSIONID.name} 返回指定的cookie对象存储的数据的键名
- ${cookie.JSESSIONID.value} 返回指定的cookie对象存储的数据的值