EL表达式——EL中的标识符、EL中的保留字、EL中的变量/常量、EL中的运算符

初识EL

EL是ExpressionLanguage的缩写,它是一种简单的数据访问语言。
EL表达式语法:

${ 表达式 }

证明EL表达式可以简化JSP页面
①创建MyServlet类:

public class MyServlet extends HttpServlet {
	private static final long serialVersionUID = 1L;
       

	/**
	 * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		
		request.setAttribute("username", "wangdong");
		request.setAttribute("password", "101203");
		
		//请求转发
		RequestDispatcher dispatcher=request.getRequestDispatcher("/myjsp.jsp");
		dispatcher.forward(request, response);
	}

	/**
	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
	 */
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		// TODO Auto-generated method stub
		doGet(request, response);
	}

}

②创建myjsp.jsp:

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>myjsp</title>
</head>
<body>
  用户名:<%=request.getAttribute("username") %>
  <br>&nbsp;&nbsp;&nbsp;&nbsp;码:<%=request.getAttribute("password") %>
  <br>
  <hr>
  使用EL表达式
  <br>
  用户名:${username}
  <br>&nbsp;&nbsp;&nbsp;&nbsp;码:${password }
  <br>
</body>
</html>

在这里插入图片描述

EL中的标识符

为了避免出现非法的标识符,在定义标识符时还需要遵循以下规范。
• 不能以数字开头。
• 不能是EL中的保留字,如and、or、gt。
• 不能是EL隐式对象,如pageContext。
• 不能包含单引号(’)、双引号(")、减号(-)和正斜杠(/)等特殊字符。
下面的这些标识符都是合法的。
username
username123
user_name
_userName
注意,下面的这些标识符都是不合法的。
123username
or
user"name
pageContext7

EL中的保留字

保留字就是编程语言里事先定义好并赋予了特殊含义的单词。和其他语言一样,EL 表达式中也定义了许多保留字,如false、not等,接下来就列举EL中所有的保留字,具体如下。
and   eq    gt     true    instanceofor  
or    ne    le     false    empty
not   lt    ge    null     div     mod
需要注意的是,EL表达式中的这些保留字不能被作为标识符,以免在程序编译时发生错误。

EL中的变量

EL表达式中的变量就是一个基本的存储单元,EL表达式可以将变量映射到一个对象上,具体示例如下所示。

${product}

在上述示例中,product就是一个变量。EL表达式中的变量不用事先定义就可以直接使用,例如,表达式${product}就可以访问变量product的值。

EL中的常量

1.布尔常量
true、false
2.整型常量
与 Java 中的十进制的整型常量相同,它的取值范围是 Java 语言中定义的常量Long.MIN_VALUE到Long.MAX_VALUE之间,即(−2)63与263−1之间的整数。
3.浮点数常量
浮点数常量用整数部分加小数部分表示,也可以用指数形式表示,例如,1.2E4和1.2都是合法的浮点数常量。它的取值范围是 Java 语言中定义的常量 Double.MIN_VALUE 到Double.MAX_VALUE之间,即4.9E-324~1.8E308之间的浮点数。
4.字符串常量
字符串常量是用单引号或双引号引起来的一连串字符。由于字符串常量需要用单引号或双引号引起来,所以,字符串本身包含的单引号或双引号需要用反斜杠(\)进行转义,即用“’”表示字面意义上的单引号,用“"”表示字面意义上的双引号。如果字符串本身包含反斜杠(\),也要进行转义,即用“\”表示字面意义上的一个反斜杠。

需要注意的是,只有字符串常量用单引号引起来时,字符串本身包含的单引号才需要进行转义,而双引号不必进行转义;只有字符串常量用双引号引起来时,字符串本身包含的双引号才需要进行转义,而单引号不必转义,例如"ab’4c"d5\e"表示的字符串是ab’4c"d5\e。
5.NUll常量
null常用于表示变量应用的对象为空。

EL中的运算符

EL表达式支持简单的运算,例如,加(+)、减(-)、乘(*)、除(/)等。为此,在EL中提供了多种运算符,根据运算方式的不同,EL中的运算符包括以下几种。

1.点运算符

(.)EL 表达式中的点运算符,用于访问 JSP 页面中某些对象的属性,如 JavaBean 对象、List集合、Array数组等,其语法格式如下。
${customer.name}
在上述语法格式中,表达式${customer.name}中点运算符的作用就是访问customer对象中的name属性。

2.方括号运算符

([])EL表达式中的方括号运算符与点运算符的功能相同,都用于访问JSP页面中某些对象的属性。当获取的属性名中包含一些特殊符号,如“-”或“?”等并非字母或数字的符号,就只能使用方括号运算符来访问该属性,其语法格式如下。${user[“My-Name”]}需要注意的是,在访问对象的属性时,通常情况都会使用点运算符作为简单的写法。但实际上,方括号运算符比点运算符应用更广泛。接下来就对比一下这两种运算符在实际开发中的应用,具体如下。
• 点运算符和方括号运算符在某种情况下可以互换,如\${student.name}等价于${student[“name”]}。

• 方括号运算符还可以访问List集合或数组中指定索引的某个元素,如表达式${users[0]}用于访问集合或数组中第1个元素。在这种情况下,只能使用方括号运算符,而不能使用点运算符。

• 方括号运算符和点运算符可以相互结合使用,例如,表达式${users[0].userName}可以访问集合或数组中的第1个元素的userName属性。

3.算术运算符

EL 表达式中的算术运算符用于对整数和浮点数的值进行算术运算。使用这些算术运算符可以非常方便地在JSP页面进行算术运算,并且可以简化页面的代码量。
在这里插入图片描述
在使用这些运算符时需要注意两个问题,“-”运算符既可以作为减号,也可以作为负号;“/”或“div”运算符在进行除法运算时,商为小数。

4. EL比较运算符

EL表达式中的比较运算符用于比较两个操作数的大小,操作数可以是各种常量、EL变量或EL表达式,所有的运算符执行的结果都是布尔类型
在这里插入图片描述
• 比较运算符中的“==”是两个等号,千万不可只写一个等号。
• 为了避免与JSP页面的标签产生冲突,对于后4种比较运算符,EL表达式中通常使用括号内的表示方式。例如,使用“lt”代替“<”运算符,**如果运算符后面是数字,在运算符和数字之间至少要有一个空格,**例如${1lt 2};但后面如果有其他符号,则可以不加空格,例如${1lt(1+1)}。

5.逻辑运算符

EL 表达式中的逻辑运算符用于对结果为布尔类型的表达式进行运算,运算的结果仍为布尔类型。
在这里插入图片描述
需要注意的是,在使用&&运算符时,如果有一个表达式结果为false,则结果必为false;在使用||运算符时,如果有一个表达式的结果为true,则结果必为true。

6.empty运算符

EL表达式中的empty运算符用于判断某个对象是否为null或" ",结果为布尔类型,其基本的语法格式如下所示。

${empty var}

• var变量不存在,即没有定义,例如表达式${empty name},如果不存在name变量,就返回true;
• var变量的值为null,例如表达式${empty customer.name},如果customer.name的值为null,就返回true;
• var变量引用集合(Set、Map和List)类型对象,并且在集合对象中不包含任何元素时,则返回值为true。例如,如果表达式${empty list}中list集合中没有任何元素,就返回true。

7.条件运算符

EL表达式中条件运算符用于执行某种条件判断,它类似于Java语言中的if-else语句,其语法格式如下。

${A?B:C}

在上述语法格式中,表达式A的计算结果为布尔类型,如果表达式A的计算结果为true,就执行表达式B,并返回B的值;如果表达式A的计算结果为false,就执行表达式C,并返回C的值,例如表达式${(1==2)?3:4}的结果就为4。

8.“( ) ”运算符

EL 表达式中的圆括号用于改变其他运算符的优先级,例如表达式${a*b+c},正常情况下会先计算 a*b 的积,然后再将计算的结果与 c 相加,如果在这个表达式中加一个圆括号运算符,将表达式修改为${a*(b+c)},这样则先计算b与c的和,再将计算的结果与a相乘。需要注意的是,EL表达式中的运算符都有不同的运算优先级,当EL表达式中包含多种运算符时,它们必须按照各自优先级的大小来进行运算。
在这里插入图片描述
在应用EL表达式取值时,没有数组的下标越界,没有空指针异常,没有字符串的拼接。

  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

心醉瑶瑾前

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值