语法"/>
EL简介和基本语法
概念:表达式语言(Expression Language),简称EL,是在JSP2.0版本中引入的特性,用来替代JSP页面中复杂的scriptlet代码,以符号“$”开头(JSP2.1之后也可以“#”开头),类似${expression}这样的代码行。通常用来简化数据的访问操作,可用来替代传统的基于<%=%>形式的的Java代码,以及部分基于<%%>形式的的Java程序片段,提供更清晰的视图层实现,使业务逻辑处理层和视图层尽可能的低耦合。
语法结构:EL的语法结构比较简单:${expression}。其中,expression必须是有效的表达式,有效表达式可以包含常量,操作符,变量(对象引用)和函数调用
在EL出现之前,卡法Java web应用程序时,经常需要将大量的Java代码片段嵌入JSP页面中,这使得页面看起来很乱,如下所示
<%if(session.getAttribute("username")!=null){out.print(session.getAttribute("username").toString());}
%>如果使用EL,则只需一行代码即可实现${username}
可见,EL比较简洁。因此,ELweb开发中比较常用,通常和jstl一起使用。
常量的值 | 常量的值 |
Boolean | true和false |
Integer | 与Java类似,可以包含任何正数和负数。 |
Floating Point | 与Java类似,可以包含任何正的和负的浮点数 |
String | 任何由单引号或双引号限定的字符串。对于单引号、双引号和反斜杠,使用反斜杠字符作为转义序列。如果在字符串两端使用烧,则单引号不需要转译。 |
null | null表示空对象 |
类型 | 定义 |
算术型 | +、-(二元)、*、/、div、%、mod、-(一元) |
逻辑型 | and、&&、or、||、!、not |
关系型 | ==、eq、!=ne、<、it、>、gt、<=、le、>=、ge。可以和其他值进行比较,或与布尔型、字符串型、整型或浮点型文字进行比较 |
空 | empty空字符串是前缀操作,可用于确定值是否为空 |
条件型 | A?B:C,根据A的结果来返回B或C的值 |
隐含对象说明 | 描述 |
pageContext | 对应JSP页面中的PageContext对象 |
pageScope | 代表page域中用于保存属性的map对象 |
requestScope | 代表request域中用于保存属性的map对象 |
sessionScope | 代表session域中用于保存属性的map对象 |
applicationScope | 代表application域中用于保存属性的map对象 |
param | 表示了一个保存了所有请求参数的map对象 |
paramValues | 表示了一个保存了所有请求参数的map对象,它对于某个请求参数,返回的是一个String[] |
header | 表示一个保存了所有http请求头字段的map对象,注意:如果头里面由“-”,例如Accept-Encoding,需写为header["Accept-Encoding"],而不能使用Accept-Encoding来获取Accept-Encoding的值。 |
headerValues | 表示了一个保存了所有http请求头字段的map对象,它对于某个请求参数,返回的是一个String[]数组,注意:如果头里面由“-”,例如Accept-Encoding,需写为headerValues["Accept-Encoding"],而不能使用headerValues.Accept-Encoding来获取Accept-Encoding的值。 |
cookie | 表示一个保存了所有cookie的map对象 |
initParam | 表示一个保存了所有web应用初始化参数的map对象 |
${username}意思是获取某一范围中名称为username的变量。因为没有指定范围,所以会依次从page、request、session、application范围查找,途中找到就返回该变量的值,不再继续找下去,全部范围找不到,则返回空字符串。
运算符:EL提供点运算符 “.” 和方括号运算符“[ ]”两种运算符来存取数据。
点运算符和方括号运算符可以实现某种程度的互换,如${student.name}等价于${student ["name"] },用于获取并显示student对象name属性值到页面上。
当要存取的属性名称中包含一些特殊字符,如“.”或 “?”等并非字母或数字的符号时,就一定要使用 [ ]。例如,${user.My-Name}应改为${user["My-Name"]}
如果要动态取值,就可以用“[ ]”来做,而“ . ”无法做到动态取值。例如,${sessionScope.student[data]}中的data是一个变量。
更多推荐
EL简介和基本语法
发布评论