EL表达式
一、EL表达式
- 命令格式:
${作用域对象别名.共享数据}
- 命令作用:
- EL表达式是EL工具包提供的一种特殊的命令格式【表达式命令格式】
- EL表达式在JSP文件上使用
- 负责在JSP文件上从作用域对象读取指定的共享数据并输出到响应体
二、EL表达式 — 作用域对象别名
JSP文件可以使用的作用域对象
ServletContext
—application
:全局作用域对象HttpSession
—session
:会话作用域对象HttpServletRequest
—request
:请求作用域对象PageContext
—pageContext
:当前页作用域对象。这是JSP文件独有的作用域对象,Servlet中不存在。在当前页作用域对象存放的共享数据仅能在当前JSP文件中使用,不能共享给其他Servlet或者其他JSP文件。真实开发过程中,主要用于JSTL标签与JSP文件之间数据共享(JSTL --> pageContext --> JSP
)
EL表达式提供作用域对象别名
| JSP | EL表达式 |
| :————-: | :——————————————: |
| application | ${applicationScope.共享数据名} |
| session | ${sessionScope.共享数据名} |
| request | ${requestScope.共享数据名} |
| pageContext | ${pageScope.共享数据名} |
三、EL表达式将引用对象属性写入到响应体
- 命令格式:
${作用域对象别名.共享数据名.属性名}
- 命令作用:从作用域对象读取指定共享数据关联的引用对象的属性值,并自动将属性的结果写入到响应体
- 属性名:一定要与引用类型属性名完全一致(大小写)
- EL表达式没有提供遍历集合的方法,因此无法从作用域对象中读取集合内容输出
四、EL表达式简化版
- 命令格式:
${共享数据名}
- 命令作用:EL表达式允许开发人员开发时省略作用域对象别名
工作原理:EL表达式简化版由于没有指定作用域对象,所以在执行时采用【猜】算法。按照
pageContext ---> request ---> session ---> application
的顺序依次查找,若没找到,返回null
存在隐患:容易降低程序执行速度;容易导致数据定位错误
- 应用场景:设计目的,就是简化从pageContext读取共享数据并输出难度
- EL表达式简化版尽管存在很多隐患,但是在实际开发过程中,开发人员为了节省时间,一般都使用简化版,拒接使用标准版
五、EL表达式 — 支持运算表达式
前提:在JSP文件中,有时需要将读取的共享数据进行一番运算之后,将运算结果写入到响应体
运算表达式:
- 数学运算
关系运算:
>(gt)
、>=(ge)
、==(eq)
、<(lt)
、<=(le)
、!=(!=)
逻辑运算:
&&
、||
、!
六、EL表达式提供内置对象
命令格式:
${param.请求参数名}
命令作用:通过请求对象读取当前请求包中的请求参数内容,并将请求参数内容写入到响应体
代替命令:
request.getParameter(请求参数名);
命令格式:
${paramValues.请求参数名[下标]}
命令作用:如果浏览器发送的请求参数是[一个请求参数关联多个值],此时可以通过paraValues读取请求参数下指定位置的值,并写入到响应体
代替命令:
request.getParameterValues(请求参数名);
七、EL表达式常见异常
javax.el.PropertyNotFoundException
:在对象中没有找到指定属性
本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!