深入理解EL表达式:语法、运算符与变量范围

需积分: 34 6 下载量 98 浏览量 更新于2024-09-18 收藏 68KB DOC 举报
"EL表达式详细解析,涵盖了其基本语法、运算符、变量存取、隐式对象以及在JSP中的应用" EL(Expression Language,表达式语言)是JavaServer Pages(JSP)中用于简化页面逻辑的重要工具,主要用于简化对JavaBean或其他数据源的访问。以下是关于EL表达式的详细解析: 1. **EL简介** EL表达式通常以`${}`包裹,用于在JSP页面中获取和展示数据。它们可以在HTML和JSP标签中使用,以替代复杂的Java代码,提高代码的可读性和简洁性。 2. **语法结构** EL的基本语法结构是`${expression}`,其中`expression`是你要执行的表达式。 3. **运算符** - **点运算符(.)**:用于访问对象的属性,如`${user.name}`将尝试获取名为`user`的对象的`name`属性。如果属性名包含非字母或数字的字符,如`My-Name`,则需使用**方括号运算符([])**,写为`${user["My-Name"]}`。 - **方括号运算符([])**:除了能处理特殊字符外,还支持动态属性名,如`${sessionScope.user[data]}`,这里的`data`是变量,可动态决定要访问的属性。 4. **变量存取** EL提供了对不同范围变量的访问: - **PageScope**:当前页面作用域内的变量,如`${pageScope.username}`。 - **RequestScope**:当前HTTP请求作用域内的变量,如`${requestScope.username}`。 - **SessionScope**:当前用户会话作用域内的变量,如`${sessionScope.username}`。 - **ApplicationScope**:整个Web应用程序作用域内的变量,如`${applicationScope.username}`。如果未指定作用域,EL会按顺序检查这些范围直到找到变量或返回null。 5. **隐式对象** 隐式对象是EL提供的预定义对象,例如: - `${param}`:返回请求参数中单个字符串的值。 - `${paramValues}`:返回请求参数的一组值。 其他隐式对象包括`pageContext`、`header`、`cookie`等,它们提供了对HTTP请求和响应的额外信息的访问。 6. **JSP中的EL** - **启用与禁用**:通过`<%@page isELIgnored="true/false"%>`可以控制EL是否启用,默认在JSP 2.0及以上版本中是启用的。 - **逻辑与关系表达式**:EL支持逻辑表达式(如`${true and false}`)和关系表达式(如`${5 > 6}`),以及算术表达式(如`${5 + 5}`)。 7. **变量搜索范围** 当EL试图获取一个变量时,它会按照Page、Request、Session、Application的顺序进行搜索。一旦找到,就不会再继续查找。 8. **点运算符(.)** 和 **方括号运算符([])** 的区别 点运算符通常用于静态属性访问,而方括号运算符支持动态属性名,也可以用于访问包含特殊字符的属性。例如,如果你有一个属性名为`my-name`,则必须使用`${user["my-name"]}`。 通过理解和熟练运用EL表达式,开发人员能够更高效地在JSP页面中处理数据,使得页面逻辑更加清晰,代码更易于维护。
2009-12-24 上传
EL表达式 (详解) EL表达式 1、EL简介 1)语法结构 ${expression} 2)[]与.运算符 EL 提供.和[]两种运算符来存取数据。 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号,就一定要使用 []。 例如: ${user.My-Name}应当改为${user["My-Name"] } 如果要动态取值时,就可以用[]来做,而.无法做到动态取值。例如: ${sessionScope.user[data]}中data 是一个变量 3)变量 EL存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为 username的变量。 因为我们并没有指定哪一个范围的username,所以它会依序从Page、Request、Session、 Application范围查找。 假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时, 就回传null。 属性范围在EL中的名称 Page PageScope Request RequestScope Session SessionScope Application ApplicationScope 4) 1--EL表达式用${}表示,可用在所有的HTML和JSP标签中作用是代替JSP页面中复杂的JAVA代码. 2--EL表达式可操作常量 变量 和隐式对象. 最常用的 隐式对象有${param}和${paramValues}. ${param}表示返回请求参数中单个字符串的值. ${paramValues}表示返回请求参数的一组 值.pageScope表示页面范围的变量.requestScope表示请求对象的变量. sessionScope表示会话 范围内的变量.applicationScope表示应用范围的变量. 3 -- 表示是否禁用EL语言,TRUE表示禁止.FALSE表示不禁 止.JSP2.0中默认的启用EL语言. 4-- EL语言可显示 逻辑表达式如${true and false}结果是false 关系表达式如${5>6} 结 果是false 算术表达式如 ${5+5} 结果是10 5--EL中的变量搜