Java EL表达式

合集下载

el表达式解析原理java

el表达式解析原理java

el表达式解析原理javaEL(Expression Language)表达式是一种用于在JSP和JavaEE应用程序中获取和操作数据的简单表达式语言。

它最初由JavaServer Pages规范定义,并在JSP 2.0中首次引入。

EL表达式提供了一种轻量级的方式来访问和操作JavaBean组件、集合和映射中的数据,而不需要编写复杂的Java代码。

在Java中解析EL表达式需要借助于EL表达式解析器。

在Java EE中,EL表达式解析器由Servlet容器负责创建和管理。

EL表达式的解析原理如下:1. 词法分析(Lexical Analysis):EL表达式的解析器首先将输入的EL表达式分解成一个个Token。

Token是词法分析的基本单元,代表一个特定的语法结构或数据类型。

比如,`'${'`、`'['`、`'('`、`'}'`、`']'`、`')'`、`.`、`'.'`、`','`等都可以作为Token。

2. 语法分析(Syntax Analysis):EL表达式的解析器根据Token序列构建抽象语法树(AST,Abstract Syntax Tree)。

语法分析器将Token按照语法规则进行组合,并创建AST节点。

例如,`${}`将被解析为一个AST节点,最终生成的AST如下所示:```. (property access)/ \person name```这个AST表示了一个属性访问,从`person`对象中获取`name`属性的值。

3. 语义分析(Semantic Analysis):EL表达式的解析器对AST进行语义分析,验证表达式的语义正确性。

它会检查使用的变量、函数是否存在,以及操作符是否支持操作数的数据类型等。

如果发现语义错误,解析器将抛出异常并中断解析过程。

详解EL表达式

详解EL表达式

详解EL表达式关于EL 表达式EL表达式总是用大括号括起,而且前面有一个美元符($)前缀:${expression}。

表示式中第一个命名变量要么式一个隐式对象,要么是某个作用域(页面作用域、请求作用域、会话作用域或应用作用域)中的一个属性。

点号操作符允许你使用一个Map键或一个bean性质名来访问值,例如,使用${foo.bar}可以得到bar的值,在此,bar是Map foo 的Map键名,或者是bean foo的一个性质。

放在点号操作符右边的东西必须遵循Java的标识符命名规则!(换句话说,必须以一个字母、下划线或美元符开头,第一个字符后面可以有数字,但不能有其他字符)。

点号右边只能放合法的Java标识符。

例如,${foo.1}键就不可以。

[]操作符比点号功能更强大,因为利用[]可以访问数组和List,可以把包含命名变量的表达式放在中括号里,而且可以做任意层次的嵌套,只要你受得了。

例如,如果musicList是一个ArrayList,可以用${musicList[0]}或${musicList[“0”]}来访问列表的第一个值。

EL并不关心列表索引加不加引号。

如果中括号里的内容没有用引号引起来,容器就会进行计算。

如果确实放在引号里,而且不是一个数组或List的索引,容器就会把它看作是性质或键的直接命名。

除了一个EL隐式对象(PageContext)外,其他EL隐式对象都是Map。

从这些隐式对象可以得到任意4个作用域中的属性、请求参数值、首部值、 cookie值和上下文初始化参数。

非映射的隐式对象是pageContext,它是PageContext对象的一个引用。

不要把隐式EL作用域对象(属性的Map)与属性所绑定的对象混为一谈。

换句话说,不要把requestScope隐式对象与具体的JSP隐式对象request混淆。

访问请求对象只有一条路,这就是通过pageContext隐式对象来访问(不过,想从请求得到的一些东西通过其他EL隐式对象也可以得到,包括param/paramValues、header/headerValues和cookie)。

EL表达式

EL表达式

EL表达式总结EL表达式总是用大括号括起,而且前面有一个美元符($)前缀:${expression}。

表示式中第一个命名变量要么式一个隐式对象,要么是某个作用域(页面作用域、请求作用域、会话作用域或应用作用域)中的一个属性。

点号操作符允许你使用一个Map键或一个bean性质名来访问值,例如,使用${foo.bar}可以得到bar的值,在此,bar是Map foo的Map键名,或者是bean foo的一个性质。

放在点号操作符右边的东西必须遵循Java的标识符命名规则!(换句话说,必须以一个字母、下划线或美元符开头,第一个字符后面可以有数字,但不能有其他字符)。

点号右边只能放合法的Java标识符。

例如,${foo.1}键就不可以。

[]操作符比点号功能更强大,因为利用[]可以访问数组和List,可以把包含命名变量的表达式放在中括号里,而且可以做任意层次的嵌套,只要你受得了。

例如,如果musicList是一个ArrayList,可以用${musicList[0]}或${musicList[“0”]}来访问列表的第一个值。

EL并不关心列表索引加不加引号。

如果中括号里的内容没有用引号引起来,容器就会进行计算。

如果确实放在引号里,而且不是一个数组或List的索引,容器就会把它看作是性质或键的直接命名。

除了一个EL隐式对象(PageContext)外,其他EL隐式对象都是Map。

从这些隐式对象可以得到任意4个作用域中的属性、请求参数值、首部值、 cookie值和上下文初始化参数。

非映射的隐式对象是pageContext,它是PageContext对象的一个引用。

不要把隐式EL作用域对象(属性的Map)与属性所绑定的对象混为一谈。

换句话说,不要把requestScope隐式对象与具体的JSP隐式对象 request混淆。

访问请求对象只有一条路,这就是通过pageContext隐式对象来访问(不过,想从请求得到的一些东西通过其他EL隐式对象也可以得到,包括param/paramValues、header/headerValues和cookie)。

el表达式三目运算符 -回复

el表达式三目运算符 -回复

el表达式三目运算符-回复什么是el表达式三目运算符,如何在Java中使用它?EL(Expression Language)是一种用于动态读取和设置JavaBean值的语言,同时还可以在JSP页面中执行简单的计算、逻辑和条件操作。

而el 表达式三目运算符则是EL表达式中的一种特殊运算符,可以根据条件的真假返回不同的值。

本文将逐步回答这一问题。

第一步:EL表达式简介在正式介绍el表达式三目运算符之前,我们先来了解一下EL表达式。

EL 表达式是JavaServer Pages(JSP)规范的一部分,主要用于简化JSP页面中的脚本编写。

EL表达式是一种面向对象的表达式语言,它使用点号(.)访问对象的属性和方法,并支持一些运算操作、条件判断和循环语句。

EL 表达式的语法类似于JavaScript和SpEL(Spring表达式语言),但有一些特殊的语法规则。

第二步:三目运算符的概念三目运算符也被称为条件运算符,它可以根据条件的真假返回不同的值。

三目运算符的语法是"条件表达式? 真值表达式: 假值表达式"。

当条件表达式为真时,返回真值表达式的值;当条件表达式为假时,返回假值表达式的值。

三目运算符可以替代if-else语句的简单判断逻辑,使代码更加简洁和紧凑。

第三步:在EL表达式中使用三目运算符EL表达式中的三目运算符与Java语言中的三目运算符类似,但有一些细微的差别。

在EL表达式中,我们使用"?"和":"来代替Java语言中的"?"和":"符号。

使用三目运算符的语法是"条件表达式? 真值表达式: 假值表达式",其中条件表达式可以是任何返回Boolean值的EL表达式。

真值表达式和假值表达式可以是任意类型的EL表达式。

例如,假设我们有一个JavaBean对象user,其中有一个属性age表示用户的年龄。

el的语法格式

el的语法格式

el的语法格式EL(Expression Language)是一种用于在JSP页面中进行表达式评估和计算的简洁和简单的语法。

它是JavaServer Pages规范的一部分,主要用于在JSP中访问和操作JavaBean、容器对象和其他JSP元素。

EL语法由一系列表达式组成,这些表达式用于在JSP页面中获取、设置和操作变量的值。

它可以从多个对象中提取值,并可以进行条件、算术和逻辑运算。

以下是EL语法的一些相关参考内容。

1. 变量访问:- 使用`${}`表示一个EL表达式。

- `${variable}`可以获取名称为variable的变量的值。

- `${object.property}`可以获取对象的属性值。

- `${array[index]}`可以获取数组的指定索引处的元素值。

2. 算术运算符:- 使用`+`、`-`、`*`、`/`和`%`进行加、减、乘、除和取模运算。

- 示例:`${1 + 2}`返回`3`。

3. 比较运算符:- 使用`==`、`!=`、`>`、`<`、`>=`、`<=`进行相等、不等、大于、小于、大于等于和小于等于的比较。

- 示例:`${5 > 3}`返回`true`。

4. 逻辑运算符:- 使用`&&`、`||`和`!`进行逻辑与、逻辑或和逻辑非的运算。

- 示例:`${true && false}`返回`false`。

5. 条件运算符:- 使用`?:`进行条件表达式的判断。

- 示例:`${(5 > 3) ? "greater" : "smaller"}`返回`greater`。

6. 内置对象:- `${pageContext}`:用于访问PageContext对象。

- `${out}`:用于访问JspWriter对象。

- `${session}`:用于访问HttpSession对象。

el表达式判断是否包含某字符串的方法

el表达式判断是否包含某字符串的方法

EL(Expression Language)是一种用于在JSP、JSF等技术中简化表达式求值的语言。

在EL中,我们常常需要判断一个字符串是否包含另一个字符串。

在本文中,我将探讨el表达式中判断是否包含某字符串的方法,并从简单到复杂逐步展开这个主题,以便更好地理解。

1. EL表达式简介EL表达式是在JSP、JSF等技术中经常使用的一种表达式语言,用于在页面中访问和操作JavaBean的属性。

它的语法简洁明了,使用起来非常方便。

我们可以通过`${}`来获取JavaBean中的name属性值。

2. 判断字符串是否包含某字符串的方法在EL中,判断一个字符串是否包含另一个字符串,可以使用`${fn:contains(string1, string2)}`方法来实现。

其中,string1为要被检查的字符串,string2为要检查是否包含的字符串。

该方法会返回一个boolean类型的值,表示string1是否包含string2。

3. 实际应用举例举个例子,假设我们有一个字符串`${fruit}`,我们想判断它是否包含"apple"这个子串,可以这样写`${fn:contains(fruit, 'apple')}`。

如果fruit包含"apple",则该表达式的值为true,否则为false。

4. 注意事项在使用`${fn:contains}`方法时,需要确保传入的两个参数都是字符串类型。

如果其中有一个参数不是字符串类型,将会抛出错误。

另外,判断时是否区分大小写取决于具体的环境配置,需要注意这一点。

5. 个人观点和理解EL表达式中判断是否包含某字符串的方法非常简单且实用。

它可以在页面上轻松地实现字符串的包含关系判断,而不需要在后台Java代码中编写繁琐的判断逻辑。

当然,在实际应用中,我们也需要注意参数类型和大小写敏感性等细节,以确保程序的稳定性和可靠性。

el表达式三目运算符 -回复

el表达式三目运算符 -回复

el表达式三目运算符-回复El表达式是一种非常常见和实用的三目运算符,它可以简洁地表示条件判断并返回不同的值。

在这篇文章中,我们将深入探讨el表达式的使用、语法和实例,并逐步解释它的工作原理。

第一步:介绍el表达式El表达式是Expression Language的简称,它是一种功能强大且易于使用的表达式语言,专门用于简化在JSP页面中进行数据绑定和处理的过程。

它允许我们在JSP页面中嵌入简单的Java代码,以实现动态内容的生成,而无需编写大量的Java代码。

第二步:el表达式的语法El表达式的语法非常简洁,它使用{}标记来表示一个el表达式。

在{}中,我们可以使用各种Java的表达式,并且可以使用各种运算符和函数。

例如,下面是一些常见的el表达式的示例:- `{1 + 1}`:该表达式将计算1 + 1的结果,并返回2。

- `{"Hello " + "World"}`:该表达式将连接"Hello "和"World"这两个字符串,并返回"Hello World"。

- `{}`:该表达式将返回名为user的对象的name属性的值。

第三步:el表达式的工作原理当JSP页面被编译时,el表达式会被转换为相应的Java代码。

在运行时,这些Java代码将被执行,并返回结果。

这样,我们就可以在JSP页面中使用el表达式来动态地生成内容。

第四步:el表达式的应用场景El表达式在JSP页面中有许多实际的应用场景。

以下是一些常见的例子:1. 数据绑定:我们可以使用el表达式将数据绑定到JSP页面上。

例如,我们可以使用`{}`将用户的名字动态地显示在页面上。

2. 条件判断:我们可以使用el表达式来进行条件判断,根据不同的情况返回不同的值。

例如,`{user.isAdmin ? "管理员" : "普通用户"}`将根据用户是否是管理员返回不同的字符串。

el表达式使用之类switch语句

el表达式使用之类switch语句

el表达式使用之类switch语句el表达式主要用于JavaWeb开发中的JSP页面中,用于在页面上动态展示数据。

在el表达式中,可以使用类似于switch语句的功能来实现多条件判断。

本文将以el表达式使用之类switch语句为主题,进行详细的解释。

一、el表达式简介1. el表达式是什么?el表达式是一种用于在JSP页面中动态访问数据的语法标记,它可以在JSP页面中直接引用Java代码中的变量和对象,并将其显示在页面上。

2. el表达式的语法规则el表达式的基本语法是{表达式},其中表达式可以是变量、属性、方法等。

二、el表达式的使用1. 引入el表达式的方式要在JSP页面中使用el表达式,需要在页面中引入el表达式的标准库。

可以通过在JSP页面的头部引入如下代码:jsp<%@ page language="java" contentType="text/html;charset=UTF-8"pageEncoding="UTF-8"%><%@ taglib prefix="c" uri=" %>引入标准库后,就可以开始使用el表达式了。

2. el表达式中的变量使用el表达式可以直接访问Java中的变量。

比如,有一个名为name的String 型变量,在JSP页面中可以通过{name}来展示其值。

3. el表达式中的属性使用el表达式可以直接访问Java对象的属性。

比如,有一个名为person的Person对象,包含name和age两个属性,在JSP页面中可以通过{}和{person.age}来展示其属性值。

4. el表达式中的方法使用el表达式可以直接调用Java对象的方法。

比如,有一个名为person的Person对象,包含一个getName()方法,在JSP页面中可以通过{person.getName()}来展示其返回值。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
${er[data]}中data 是一个变量 3、变量 EL存取变量数据的方法很简单,例如:${username}。它的意思是取出 某一范围中名称为username的变量。 因为我们并没有指定哪一个范围的username,所以它会依序从Page、 Request、Session、Application范围查找。 假如途中找到username,就直接回传,不再继续找下去,但是假如全 部的范围都没有找到时,就回传null。 属性范围在EL中的名称 Page PageScope Request RequestScope Session SessionScope Application ApplicationScope 二、JSP EL 中的有效表达式 有效表达式可以包含文字、操作符、变量(对象引用)和函数调用。
param 将请求参数名称映射到单个字符串参数值(通过调用 ServletRequest.getParameter (String name) 获得)。getParameter (String) 方法返回带有特定名称的参数。表达式 $() 相当于 request.getParameter (name)。 paramValues 将请求参数名称映射到一个数值数组(通过调用 ServletRequest.getParameter (String name) 获得)。它与 param 隐式对象 非常类似,但它检索一个字符串数组而不是单个值。表达式 ${) 相当于 request.getParamterValues(name)。 header 将请求头名称映射到单个字符串头值(通过调用 ServletRequest.getHeader(String name) 获得)。表达式 ${} 相当于 request.getHeader(name)。 headerValues 将请求头名称映射到一个数值数组(通过调用 ServletRequest.getHeaders(String) 获得)。它与头隐式对象非常类似。表 达式 ${} 相当于 request.getHeaderValues(name)。 cookie 将 cookie 名称映射到单个 cookie 对象。向服务器发出的客户端 请求可以获得一个或多个 cookie。表达式 ${.value} 返回带 有特定名称的第一个 cookie 值。如果请求包含多个同名的 cookie,则应 该使用 ${} 表达式。 initParam 将上下文初始化参数名称映射到单个值(通过调用 ServletContext.getInitparameter(String name) 获得)。 除了上述两种类型的隐式对象之外,还有些对象允许访问多种范围的 变量,如 Web 上下文、会话、请求、页面: 术语 定义
我们将分别了解这些有效表达式中的每一种:
1、文字 JSP 表达式语言定义可在表达式中使用的以下文字: 文字 文字的值 Boolean true 和 false Integer 与 Java 类似。可以包含任何正数或负数,例如 24、-45、567 Floating Point 与 Java 类似。可以包含任何正的或负的浮点数,例如 -1.8E-45、4.567 String 任何由单引号或双引号限定的字符串。对于单引号、双引号和反斜 杠,使用反斜杠字符作为转义序列。必须注意,如果在字符串两端使用 双引号,则单引号不需要转义。 Null null 2、操作符 JSP 表达式语言提供以下操作符,其中大部分是 Java 中常用的操作 符: 术语 定义 算术型 +、-(二元)、*、/、div、%、mod、-(一元) 逻辑型 and、&&、or、||、!、not 关系型 ==、eq、!=、ne、、gt、<=、le、>=、ge。可以与其他值进行比较,或 与布尔型、字符串型、整型或浮点型文字进行比较。 空 空操作符是前缀操作,可用于确定值是否为空。 条件型 A ?B :C。根据 A 赋值的结果来赋值 B 或 C。 3、隐式对象 JSP 表达式语言定义了一组隐式对象,其中许多对象在 JSP scriplet 和 表达式中可用: pageContext JSP 页的上下文。它可以用于访问 JSP 隐式对象,如请求、响应、会 话、输出、servletContext 等。例如,${pageContext.response} 为页面的 响应对象赋值。 此外,还提供几个隐式对象,允许对以下对象进行简易访问: 术语 定义
Java EL表达式
E L(Expression Language) 目的:为了使JSP写起来更加简单。 表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供 了在 JSP 中简化表达式的方法。它是一种简单的语言,基于可用的命名 空间(PageContext 属性)、嵌套属性和对集合、操作符(算术型、关 系型和逻辑型)的访问符、映射到 Java 类中静态方法的可扩展函数以 及一组隐式对象。
将会话范围的变量名称映射到其值。该对象允许访问会话对象的属 性。例如: $} applicationScope 将应用程序范围的变量名称映射到其值。该隐式对象允许访问应用程 序范围的对象。 三、特别强调: 1、注意当表达式根据名称引用这些对象之一时,返回的是相应的对象 而不是相应的属性。例如:即使现有的 pageContext 属性包含某些其他 值,${pageContext} 也返回 PageContext 对象。 2、 注意 <%@ page isELIgnored="true" %> 表示是否禁用EL语言,TRUE 表示禁止.FALSE表示不禁止.JSP2.0中默认的启用EL语言。

requestScope 所有请求范围的对象的集合
sessionScope 所有会话范围的对象的集合 下面是获取HTTP访问头部数据和用户提交数据的示例 EL表达式 运算结果 ${header["host"]} 这里得到HTTP连接头部的host值 ${header["accept"]} 这里获得HTTP头部的accept值 ${header["user-agent"]} 这里获得HTTP头部的user-agent值 以下可以读取用户提交的信息,假设用户提交信息为 ? name=myname&alies=(这里有两种访问方式,一种是使用[]来进 行访问,另外一种是使用" "来进行访问,两种访问效果是一样的。) ${param["name"] } myname ${} myname ${param["alies"] } ${param.alies}
隐含对象数据演示: EL 表达式定义了11个隐含对象,使用这11个对象可以很方便的读取到 session,cookie,HttpHeader,用户提交表单(param)等 隐含对象 内容 applicationScope 应用程序范围内的scoped变量组成的集合 cookie 所有cookie组成的集合 header HTTP请求头部,字符串 headerValues HTTP请求头部,字符串集合 initParam 全部应用程序参数名组成的集合 pageContext 当前页面的javax.servlet.jsp.PageContext对象 pageScope 页面范围内所有对象的集合 param 所有请求参数字符串组成的集合 paramValues 所有作为字符串集合的请求参数
pageScope 将页面范围的变量名称映射到其值。例如,EL 表达式可以使用 ${pageScope.objectName} 访问一个 JSP 中页面范围的对象,还可以使用 ${pageScope.objectName.attributeName} 访问对象的属性。 requestScope 将请求范围的变量名称映射到其值。该对象允许访问请求对象的属 性。例如,EL 表达式可以使用 ${requestScope.objectName} 访问一个 JSP 请求范围的对象,还可以使用 ${requestScope.objectName.attributeName} 访问对象的属性。 sessionScope
EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功能。脚本 编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码的元素。它 们通常用于对象操作以及执行那些影响所生成内容的计算。JSP 2.0 将 EL 表达式添加为一种脚本编制元素。 二、JSP EL简介 1、语法结构 ${expression} 2、[ ]与.运算符 EL 提供“.“和“[ ]“两种运算符来存取数据。 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的 符号,就一定要使用“[ ]“。例如: ${user.My-Name}应当改为${user["My-Name"] } 如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。例 如:
相关文档
最新文档