`

EL表达式

阅读更多
EL表达式
     EL全名为Expression Language,它原来是JSTL1.0为了方便存取数据所定义的语言。到了JSP2.0以后,EL正式纳入成为标准规范之一。只要是支持Servlet2.4/JSP2.0的Container,都可以在JSP网页中直接使用EL。
通过本章的学习,读者应该能够完成如下几个目标。
熟练掌握使用EL运算符
熟练掌握EL内置对象
熟练掌握使用EL存取器

1  EL运算符
     EL提供了多种运算符操作,比如算术运算符、关系运算符、逻辑运算符、验证运算符等。本节将对这些运算符进行详细的讲解。

1.1 算术运算符
  通过EL提供算术运算符,开发者可以非常方便的在JSP页面进行算术操作。而且使用算术运算符和Java的算术运算符非常相视,开发者能很熟练的使用这些算术运算符来进行开发,从而简化了页面代码量。
常用的算术运算符有加、减、乘、除、求余,如下表所示。

算术运算符 说明 示例 结果
+ 加 ${1 + 1} 2
- 减 ${1 - 1} 0
* 乘 ${1 * 2} 2
/或div 除 ${3 / 2} 1.5
%或mod 取余 ${3 % 2} 1

1.2 关系运算符
  关系运算符主要用来进行比较操作。EL提供了关系运算符,使开发者能很方便的在JSP页面进行比较操作。
常用的关系运算符有等于、不等于、小于、大于、小于或等于、大于或等于,如下表所示。

关系运算符 说明 示例 结果
= = 或 eq 等于 ${1 = = 1}或${1 eq 1} true
!= 或ne 不等于 ${1 != 1}或${1 ne 1} false
< 或 lt 小于 ${1 < 2}或${1 lt 1} true
> 或 gt 大于 ${1 > 2}或${1 gt 1} false
<= 或 le 小于或者等于 ${1 <= 2}或${1 le 1} true
>= 或 ge 大于或者等于 ${1 >= 2}或${1 ge 1} false

1.3 逻辑运算符
  逻辑运算符主要用来进行逻辑操作,如:交集、并集、非。EL提供了关系运算符,使开发者能很方便的在JSP页面进行逻辑操作。需要注意的是运算符两边的表达式必须是布尔类型的。

逻辑运算符 说明 示例 结果
&& 或 and 交集 ${A && B}或${A and B} 当A和B都为true时为true,其他情况为false
|| 或 or 并集 ${A || B}或${A or B} 当A和B都为false时为false,其他情况为true
! 或 not 非 ${!A} 或${not A} 当A为true时,为false 当A为false时,为true

1.4 条件运算符
  前面提到了大量的预算符,下面还将介绍一个可以节省大量代码的条件运算符。条件运算符的格式如下。
${A ? B : C}
如果A为true时,执行B代码;而如果A为false时,则执行C代码。

1.5 验证运算符
  EL提供了验证运算符empty,其对于验证数据特别有用。empty运算符采用单个表达式作为其变量即${empty input},并返回一个布尔值,该布尔值表示对表达式求值的结果是不是“空”值。求值结果为null的表达式被认为是空,如无元素的集合或数组。如果参数是对长度为零的String求值所得的结果,则empty 运算符也将返回 true。

1.6 括号运算符以及运算符的优先级
括号运算符主要用来改变运算的优先级,例如${(3+2)*8},执行结果为40。如果去掉括号,那么结果将为19。从而可以看出在括号中内容将会先执行。




低 从高到低
[] , .
()
-(负) 、 not 、 ! 、 empty
* 、 / 、 div 、 % 、 mod
+ 、-(减)
< 、 > 、 <= 、 >= 、 lt 、 gt 、 le 、 ge
== 、 != 、 eq 、 ne
&& 、 and
|| 、 or
${A ? B : C}

2 EL内置对象
  EL表达式非常简单,在前面已经介绍过EL的运算符。所有的EL表达式都是以“${”开始“}”为结尾的。如:“${applicationScope.user.userName}”。
如果按照以前的JSP Scriptlets的写法代码如下。
User user = (User)application.getAttribute(“user”);
String username = user.getUserName();

2.1 .与[ ]运算符
  EL通过.与[ ]运算符来存取数据。比如:
${applicationScope.user.userName}
等价于
${applicationScope.user[“userName”] }
.和[ ]也可以同时混合使用,如下:
${sessionScope.shoppingCart[0].price}
回传的结果为shoppingCart中第一项物品的价格。
接下来介绍两者的差异。

(1)如果存取的属性名称包含一些特殊的符号,如“.”或者是“-”等非字母或数字的符号时,就必须使用[ ],例如。
applicationScope.user.usert-Name
这样写是错误的,必须使用[ ],代码如下。
applicationScope.user[“user-Name”]
(2)如果使用变量来传入,那么也就只能使用[ ]。例如。
<%String data = “userName”;%>
${applicationScope.user[data]}
这样做的效果等于于上面代码。
${applicationScope.user.userName}

2.2 与储存有关的内置对象
前面几章介绍了JSP中有内置对象,同样在EL中也有自己的隐含对象。
首先介绍4个与存储范围有关的隐含对象,分别是applicationScope、sessionScope、requestScope、pageScope。这些隐含对象使用时来和JSP中的pageContext,request,session,application一样。但是这四个隐含对象只能用来取得某个范围的属性值。即JSP中的getAttribute(String name),不能取得其他的信息。比如在JSP中request对象除了能够存取属性外,还可以用来接受参数和表头信息等。
(1)applicationScope对象,用来取得application范围属性值。
(2)sessionScope对象,用来取得session范围属性值。
(3)requestScope对象,用来取得request范围属性值。
(4)pageScope对象,用来取得page范围属性值。
如果不指定范围,如使用${name}。其意思是去取某一范围中名称为name的属性。因为并没有指定哪一个属性范围的name,所以它的默认值会从page范围内找,如果找不到,再依次到request、session、application范围中找。如果没有找到就返回null。在网页中也就没有显示。

2.3 与输入有关的内置对象
    与输入有关的隐含对象有两个param和paramValues,用来取得用户的请求参数。在使用EL之前可以使用如下代码取得用户的请求参数。
request.getParameter(String name);
request.getParameterValues(name);
在使用EL时则可以使用param和paramValues两者来取得用户请求参数。其中使用param接收的参数只有一个值,而如果参数有几个值,就必须使用paramValues来接受参数。

2.4 cookie内置对象
    下面来介绍EL其他的隐含对象cookie、header、headerValues、iniParam、pageContext。
cookie以key-value(键值对)的形式存储在浏览器的缓存区内。EL中没有提供设定cookie的操作(这些操作一般都是后端开发者去做的),只能通过cookie对象设置cookie中的值。

2.5 header内置对象
     header储存用户浏览器和服务器用来沟通的数据。当用户浏览器请求服务器的页面时,会传送出一个记载信息的标头文件。而服务器端可以通过header或者headerValues来取得这些值。其中header用来取得同一标头名称只有一个值的信息,而headerValues用来取得同一标头名称拥有不同的值的信息。

2.6 initParam内置对象
     initParam可以取得在web站点中设置的环境参数(context)值。

03 <context-param>
04 <param-name>username</param-name>
05 <param-value>James</param-value>
06 </context-param>

2.7 pageContext内置对象
pageContext用来取得有关用户请求和页面的详细信息。

取得请求的参数字符串    ${pageContext.request.queryString}
取得请求URL                  ${pageContext.request.requestURL}
取得web应用名称           ${pageContext.request.contextPath}
取得HTTP请求方式(GET or POST)pageContext.request.method}
取得使用的协议              ${pageContext.request.protocol}
取得用户IP地址              ${pageContext.request.remoteAddr}
判断session是否为新     ${pageContext.session.new}
取得sessionID                ${pageContext.session.id}

3 EL存取器
      使用EL存取器(也称作导航)可以访问JavaBean、Map、对象数组和List等中的数据。EL对数据的访问比使用Scriptlets有着代码量少,易维护的特点。

使用存取器读取JavaBean中的数据
使用存取器读取Map中的数据
使用存取器读取数组中的数据
存取器复杂应用

分享到:
评论

相关推荐

    EL表达式的使用详解

    EL 表达式的使用详解 EL 表达式是一种在 Java 服务器页面(JSP)中使用的表达式语言。它提供了一种简单的方式来访问和操作 Java 对象的属性。EL 表达式广泛应用于 JSP、Servlet、JSF 等 Web 开发技术中。本文将详细...

    el表达式用法部分解说

    ### EL表达式详解 EL(Expression Language)表达式在Java Web开发中扮演着重要的角色,尤其是在JSP(Java Server Pages)技术中。本文将详细解释EL表达式的使用方法及其应用场景,帮助开发者更好地理解和掌握这一...

    EL表达式包括字符串处理,时间日期的格式化,数字处理

    ### EL表达式详解 #### 一、EL表达式的概述与基本使用 EL(Expression Language),即表达式语言,是JavaServer Pages (JSP) 2.0标准的一部分,用于简化JSP页面中对数据访问的操作。它允许开发者通过简单的语法在...

    EL表达式的语法介绍

    EL 表达式语法介绍 EL 表达式是 Java 服务器页面(JSP)和 Java 服务器面板(JSF)中使用的一种表达式语言,用于在 Web 应用程序中实现动态内容。EL 表达式可以被解析成数值表达式和方法表达式,其中取值表达式用于...

    jsp页面中EL表达式被当成字符串处理不显示值问题的解决方法

    当EL表达式被错误地当作字符串处理而不是被解析时,会导致其原本要展示的数据无法正确显示。这个问题在使用Java EE 5及以上版本时比较常见。 要解决这个问题,首先需要理解EL表达式的解析与web.xml配置文件中指定的...

    EL表达式使用文档,方便快速使用EL表达式.pdf

    EL 表达式使用文档 EL 表达式(Express Language)是一种强大的表达式语言,用于简化 JSP 页面中的编程。EL 表达式可以嵌入在 JSP 页面内部,减少 JSP 脚本的编写,目的是要替代 JSP 页面中脚本的编写。 EL 表达式...

    JAVAEE实验报告EL表达式和jstl标签库的使用.pdf

    JAVAEE 实验报告 EL 表达式和 JSTL 标签库的使用 EL 表达式(Expression Language)是一种在 JSP 页面中使用的脚本语言,用于简化 JSP 页面的开发。EL 表达式可以访问 JSP 页面中的变量、对象和集合,进行逻辑操作...

    JSTL以及EL表达式所需jar包

    EL表达式是Java EE中的一个强大功能,它允许开发者在JSP页面中简洁地访问和操作应用程序范围内的对象。EL表达式的语法类似于JavaScript,但它的主要目的是提供一种声明式的方式来获取和设置JavaBeans属性。例如,`${...

    EL表达式练习 EL表达式练习

    EL表达式主要用于简化JSP页面中的代码,提高可读性和可维护性。 **EL表达式的基本语法** EL表达式通常以"$"或 "#{}" 开头,如 `${expression}` 或 `#{expression}`。这里的`expression`是一个变量或方法调用,它...

    el表达式EL表达式言语和JSTL

    **EL表达式** EL(Expression Language)表达式是Java服务器页面(JSP)2.0及更高版本中引入的一种轻量级、强大的脚本语言,主要用于简化Java Web应用程序中的数据访问。它允许开发者在JSP页面中直接访问JavaBean...

    jsp中的EL表达式简介

    【JSP EL表达式简介】 EL(Expression Language)是JavaServer Pages(JSP)中的一种简洁的表达式语言,设计的初衷是为了简化JSP页面的编写。EL受到ECMAScript和XPath表达式语言的启发,提供了更高效的方式来访问和...

    EL表达式全解语法中文技术文档

    **EL表达式全解语法中文技术文档** **一、EL表达式基础** EL(Expression Language,表达式语言)是JavaServer Pages(JSP)2.0及更高版本中引入的一种强大的脚本语言,用于简化页面中的数据访问。EL表达式在JSP中...

    EL表达式(很全很强大)

    ### EL表达式详解 #### 一、EL表达式的语法结构及使用 EL(Expression Language)是一种简化了的数据访问语言,用于获取JavaBean属性值或调用其方法等操作。其基本语法结构为`${expression}`,这使得开发者能够在...

    JSTL,EL表达式语法简介

    EL表达式通常在`${}`中书写,比如`${user.name}`用来获取名为`user`的对象的`name`属性。 **JSTL中的核心标签库(Core Tags)**包括用于控制流程、输出、URL处理、条件判断和迭代的标签。例如: - `&lt;c:if&gt;`用于条件...

    JSTL自定义EL表达式

    本资源主要讲解了如何在JSTL中定义和使用自定义的EL表达式,这对于提高JSP页面的可读性和可维护性至关重要。 首先,理解JSTL的基础概念。JSTL由几个核心标签库组成,如fmt、fn、sql、xml等,它们提供了处理日期和...

    el表达式介绍 el表达式使用帮助文档

    EL表达式的主要目标是提高JSP页面的可读性和可维护性,减少脚本代码的数量。 ### EL表达式的基本语法 EL表达式通常以`$`符号开头,后跟大括号`{}`,如`${expression}`。表达式可以是简单的属性引用,也可以包含...

    EL表达式的使用方法

    ### EL表达式的使用方法 #### 一、简介 在Java Web开发中,EL(Expression Language)表达式是一种非常实用的功能,它允许开发者在JSP页面中动态获取对象属性的值或者执行简单的运算操作。通过使用EL表达式,可以...

    EL表达式EL表达式

    **EL表达式(Expression Language)**是Java服务器页面(JSP)技术中的一个重要组成部分,它提供了一种简洁而强大的方式来访问和操作数据,如JavaBeans属性、JSP作用域中的对象等。EL表达式的设计目标是简化JSP页面的...

    el表达式教程,教你学会使用el表达式

    EL 表达式教程 EL(Expression Language)是一种简洁的语言,用于在 JSP 中访问和操作数据。EL 表达式提供了简洁的语法来访问和操作数据,使得开发者可以更方便地在 JSP 中进行数据处理。 基本语法 EL 表达式的...

Global site tag (gtag.js) - Google Analytics