动态网站开发07:EL和JSTL

EL和JSTL
一、前言
二、笔记
(一)、EL基本语法
1、EL的概念
2、EL的语法
3、EL基本语法的特点
(二)、EL中的标识符
1、EL中标识符的规范
2、EL中标识符的示例
(1)合法标识符
(2)非法标识符
(三)EL中的关键字
(四)EL中的变量
1、基本概念
2、简单示例
(五)EL中的常量
1、布尔常量
2、整型常量
3、浮点型常量
4、字符串常量
5、Null常量
(六)EL访问数据
1、EL的点运算符
2、方括号运算符
3、EL运算法的应用
(七)EL中的运算符
1、算术运算符
2、比较运算符
3、逻辑运算符
4、empty运算符
5、条件运算符
6、小括号运算符
7、运算优先级
三、EL隐式对象
(一)
四、JSTL
(一)
1、
(二)
1、
(三)
1、
(四)
1、
五、JSTL中的Core标签库
一、前言
表达式语言(Expression Language),或称EL表达式,简称EL,是Java中的一种特殊的通用编程语言,借鉴于JavaScript和XPath。主要作用是在Java Web应用程序嵌入到网页(如JSP)中,用以访问页面的上下文以及不同作用域中的对象 ,取得对象属性的值,或执行简单的运算或判断操作。EL在得到某个数据时,会自动进行数据类型的转换。
二、笔记
(一)、EL基本语法
1、EL的概念
EL全称为Expression Language,即表达式语言。它是JSP 2.0引入的一个新内容。EL可以简化JSP开发中的对象引用,从而规范页面代码,增加程序的可读性及可维护性。EL为不熟悉Java语言页面开发的人员提供了一个开发JavaWeb应用的新途径。
2、EL的语法
EL的语法非常简单,都是以“ ”符号开始,以“”符号结束的语法格式: {”符号开始,以“}”符号结束的 语法格式: 符号开始,以符号结束的语法格式:{表达式}
表达式”中的表达式必须符合 E L 语法要求。由于 E L 的语法以“ {表达式}”中的表达式必须符合EL语法要求。 由于EL的语法以“ 表达式中的表达式必须符合EL语法要求。由于EL的语法以{" 开头,如果在JSP网页中要显示“${“字符串,必须在前面加上“\”符号,即“${”,或者写成“KaTeX parse error: Expected '}', got 'EOF' at end of input: {{}“ 也就是用表达式输出“KaTeX parse error: Expected '}', got 'EOF' at end of input: …直接通过“+”符号进行连接(如 {number1 + number2})。
(3)EL不仅可以访问一般变量,还可以访问JavaBean中的属性、嵌套属性和集合对象。
(4)在EL中,可以执行算术运算、逻辑运算、关系运算和条件运算等。
(5)在EL中,可以获取pageContext对象,进而获取其他内置对象。
(6)在使用EL进行除法运算时,如果除数为0,则返回表示无穷大的Infinity,而不返回错误。
(7)在EL中,可以访问JSP的作用域(page、request、 session与 application)。

(二)、EL中的标识符
1、EL中标识符的规范
在EL中,经常需要使用一些符号标记一些名称,如变量名、自定义函数名等,这些符号被称为标识符。EL中的标识符可以由任意的大小写字母、数字和下划线组成,为了避免出现非法的标识符,在定义标识符时还需要遵循以下规范。
(1)不能以数字开头。
(2)不能是EL中的关键字,如and、or、gt等。
(3)不能是EL隐式对象,如pageContext。
(4)不能包含单引号(')、双引号(")、减号(-)和正斜线(/)等特殊字符。
2、EL中标识符的示例
(1)合法标识符
username
username123
user_name
_userName

(2)非法标识符
123username
or
user"name
pageContext

(三)EL中的关键字
= 关键字就是编程语言里事先定义好并赋予了特殊含义的单词,和其他语言一样,EL中也定义了许多关键字,如false、not等。

EL所有的关键字
1 2 3 4
and eq gt true
instanceof or ne le
false empty not lt
ge null div mod
(四)EL中的变量
1、基本概念
EL中的变量就是一个基本的存储单元,EL中的变量不用事先定义就可以直接使用。EL可以将变量映射到一个对象上。
2、简单示例
${message}

在上述示例中,message就是一个变量,通过表达式KaTeX parse error: Undefined control sequence: \) at position 503: …的单引号或双引号需要用反斜杠(\̲)̲进行转义,即用“'”表示字面意…{student.name}
在上述语法格式中,表达式 s t u d e n t . n a m e 中点运算符的作用就是访问 s t u d e n t 对象中的 n a m e 属性。 2 、方括号运算符 E L 中的中括号运算符与点运算符的功能相同,都用于访问 J S P 页面中某些对象的属性,当获取的属性名中包含一些特殊符号,如“ − ”或“ ? ”等非字母或数字的符号,就只能使用中括号运算符访问该属性。方括号运算符示例: {student.name}中点运算符的作用就是访问student对象中的name属性。 2、方括号运算符 EL中的中括号运算符与点运算符的功能相同,都用于访问JSP页面中某些对象的属性,当获取的属性名中包含一些特殊符号,如“-”或“?”等非字母或数字的符号,就只能使用中括号运算符访问该属性。 方括号运算符示例: student.name中点运算符的作用就是访问student对象中的name属性。2、方括号运算符EL中的中括号运算符与点运算符的功能相同,都用于访问JSP页面中某些对象的属性,当获取的属性名中包含一些特殊符号,如?等非字母或数字的符号,就只能使用中括号运算符访问该属性。方括号运算符示例:{user[“user-name”]}
3、EL运算法的应用
(1)点运算符和方括号运算符在某种情况下可以互换,如 s t u d e n t . n a m e 等价于 {student.name}等价于 student.name等价于{student[“name”]}。
(2)中括号运算符还可以访问List集合或数组中指定索引的某个元素,如表达式 u s e r s [ 0 ] 用于访问集合或数组中第一个元素。( 3 )中括号运算符和点运算符可以相互结合使用,例如,表达式 {users[0]}用于访问集合或数组中第一个元素。 (3)中括号运算符和点运算符可以相互结合使用,例如,表达式 users[0]用于访问集合或数组中第一个元素。(3)中括号运算符和点运算符可以相互结合使用,例如,表达式{users[0].age} 可以访问集合或数组中的第一个元素的age属性。

(七)EL中的运算符
1、算术运算符
算术运算符 说明 算术表达式 结果

  • 加 ${10 + 2} 12
  • 减 ${10 - 2} 8
  • 乘 ${10 * 2} 20
    /(或div) 除 10 / 4 或 {10 / 4}或10/4或{10 div 2} 2.5
    %(或mod) 取模(取余) KaTeX parse error: Expected ‘}’, got ‘EOF’ at end of input: {10 % 4}或{10 mod 2} 2
    EL中的算术运算符用于对整数和浮点数的值进行算术运算。
    “-”运算符即可以作为减号,也可以作为负号。
    “/”或“div”运算符在进行除法运算时,商为小数。
    EL的“+”运算符与Java的“+”运算符不同,它不能实现两个字符串之间的连接,如果使用该运算符连接两个不可以转换为数值型的字符串,将抛出异常;如果使用该运算符连接两个可以转换为数值型的字符串,EL会自动将这两个字符串转换为数值型,再进行加法运算。
    2、比较运算符
    EL中的比较运算符用于比较两个操作数的大小,操作数可以是各种常量、EL变量或EL表达式,所有的比较运算符执行的结果都是布尔类型。
    比较运算符 说明 关系表达式 结果
    (或eq) 等于 10 = = 2 或 {10 == 2}或102或{10 eq 2} false
    !=(或ne) 不等于 10 ! = 2 或 {10 != 2}或10!=2或{10 ne 2} true
    <(或lt) 小于 10 < 2 或 {10 < 2}或10<2或{10 lt 2} false
    ·>(或gt) 大于 10 > 2 或 {10 > 2}或10>2或{10 gt 2} true
    <=(或le) 小于等于 10 < = 2 或 {10 <= 2}或10<=2或{10 le 2} false
    ·>=(或ge) 大于等于 10 > = 2 或 {10 >= 2}或10>=2或{10 ge 2} true
    比较运算符中的“==”是两个等号,千万不可只写一个等号。
    为了避免与JSP页面的标签产生冲突,对于后4种比较运算符,EL中通常使用上表中括号内的表示方式,例如,使用“lt”代替“<”运算符,如果运算符后面是数字,在运算符和数字之间至少要有一个空格,例如1 l t 2 ,但后面如果有其他符号时则可以不加空格,例如 {1lt 2},但后面如果有其他符号时则可以不加空格,例如1lt2,但后面如果有其他符号时则可以不加空格,例如{1lt(1+1)}。
    3、逻辑运算符
    EL中的逻辑运算符用于对结果为布尔类型的表达式进行运算,运算的结果仍为布尔类型。
    逻辑运算符 说明 逻辑表达式 结果
    &&(and) 逻辑与 KaTeX parse error: Expected ‘}’, got ‘&’ at position 7: {true &̲& false}或{true and false} false
    (or) 逻辑或 KaTeX parse error: Expected '}', got '&' at position 19: …lse 需要注意的是,在使用&̲&运算符时,如果有一个表达式结…{empty expression}
    在上述语法格式中,expression用于指定要判断的变量或对象。
    定义两个request范围内的变量user1和user2,分别设置它们的值为null和""
    <% request.setAttribute(“user1”, “”); %>
    <% request.setAttribute(“user2”, null); %>
    1
    2
    通过empty运算符判断user1和user2是否为空
    ${empty user1} // 返回值为true
    ${empty user2} // 返回值为true

由上述代码可知一个变量或对象为null 或空,代表的意义是不同的。null 表示这个变量没有指明任何对象,而空表示这个变量所属的对象内容为空,例如,空字符串、空的数组或者空的List容器。
5、条件运算符
EL中条件运算符(?:)用于执行某种条件判断,它类似于Java语言中的if-else语句。
语法格式: A ? B : C 在上述语法格式中,表达式 A 的计算结果为布尔类型,如果表达式 A 的计算结果为 t r u e ,就执行表达式 B ,并返回 B 的值作为整个表达式的结果;如果表达式 A 的计算结果为 f a l s e ,就执行表达式 C ,并返回 C 的值作为整个表达式的结果。例如,表达式 {A ? B : C} 在上述语法格式中,表达式A的计算结果为布尔类型,如果表达式A的计算结果为true,就执行表达式B,并返回B的值作为整个表达式的结果;如果表达式A的计算结果为false,就执行表达式C,并返回C的值作为整个表达式的结果。例如,表达式 A?B:C在上述语法格式中,表达式A的计算结果为布尔类型,如果表达式A的计算结果为true,就执行表达式B,并返回B的值作为整个表达式的结果;如果表达式A的计算结果为false,就执行表达式C,并返回C的值作为整个表达式的结果。例如,表达式{(1 == 2) ? 3 : 4}的结果就是4。
6、小括号运算符
EL中的小括号用于改变其他运算符的优先级,例如,表达式a ∗ b + c ,正常情况下会先计算 a ∗ b 的积,然后再将计算的结果与 c 相加,如果在这个表达式中加一个小括号运算符,将表达式修改为 {a * b + c},正常情况下会先计算a * b的积,然后再将计算的结果与c相加,如果在这个表达式中加一个小括号运算符,将表达式修改为a∗b+c,正常情况下会先计算a∗b的积,然后再将计算的结果与c相加,如果在这个表达式中加一个小括号运算符,将表达式修改为{a * (b + c)},则会先计算b与c的和,再将计算的结果与a相乘。
7、运算优先级
EL中的运算符都有不同的运算优先级,当EL中包含多种运算符时,它们必须按照各自优先级的大小进行运算。
优先级 运算符
1 [ ] .
2 ( )
3 -(unary)、not、!、empty
4 *、/、div、%、mod
5 +、-(binary)
6 <、>、<=、>=、lt、gt、le、ge
7 ==、!=、eq、ne
8 &&、and
9 丨丨、or
10 ? :
注意:在应用EL取值时,没有数组的下标越界,没有空指针异常,没有字符串的拼接。
三、EL隐式对象
先写到这里

(一)
四、JSTL
(一)
1、
(二)
1、
(三)
1、
(四)
1、
五、JSTL中的Core标签库

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值