2023年7月29日发(作者:)
EL
表达式语言
EL(Expression Language表达式语言)
1. EL语言介绍
EL语言是JSTL输出(输入)一个JAVA表达式的表示形式。EL语言只能通过建立表达式${exp1}来进行调用。在属性值中使用表达式有三种方式。
(1) value属性包含一个表达式
${userName}
相当于
<%=ribute(“userName”)%>
或 <%=ribute(“userName”)%>
从小到大去搜索
(2) value属性包含一个或多个属性,这些属性被文本分割或围绕
表达式从左到右进行计算,并将结果转换为字符串型(根据类型转换规则),并将结果赋值给value属性。
(3) value属性仅仅包含文本
字符串型属性value将根据类型转换规则转换为标签所希望的类型。
2. EL语言的操作符
(1).获得有名字的属性
获取bean的指定名称的属性值。
.不能用于调用方法
例如表达式${me}表明对象user的userName属性,有getUserName()方法
${user}:调用user对象的toString方法
${ce}
User对象中有一个address属性,而address的类型又有一个province属性, 实现对象属性的级联操作格式:${对象名.属性.属性.属性}
(2)使用[]操作符来获得有名字或按数字排列的属性
${user["userName"]} = ${user. userName }
${row[0]} row集合的第一个条目
其中user是一个类的对象,属性userName必须符合标准JavaBean的规范,即必须为userName属性定义相应的getter、setter方法。
主要用于根据下标输出集合中的元素。
注意:对于属性名必须带上引号。
(3)empty操作符(空值检查)
使用empty操作符来决定对象、集合或字符串变量是否存在或者为空(内容)。
(4)关系操作符
操作符
.
[]
()
? :
+
-
*
% 或
mod
功能和作用
访问一个 bean 属性或者 Map entry
访问一个数组或者链表元素
对子表达式分组,用来改变赋值顺序
条件语句,比如:条件 ?ifTrue:ifFalse
如果条件为真,表达式值为前者,反之为后者
数学运算符,加操作
数学运算符,减操作或者对一个值取反
数学运算符,乘操作
/ 或 div 数学运算符,除操作
数学运算符,模操作 ( 取余 )
== 或 eq 逻辑运算符,判断符号左右两端是否相等,如果相等返回 true ,否则返回 false
!= 或 ne 逻辑运算符,判断符号左右两端是否不相等,如果不相等返回 true ,否则返回 false
< 或 lt 逻辑运算符,判断符号左边是否小于右边,如果小于返回 true ,否则返回 false
> 或 gt 逻辑运算符,判断符号左边是否大于右边,如果大于返回 true ,否则返回 false
<= 或 le 逻辑运算符,判断符号左边是否小于或者等于右边,如果小于或者等于返回 true ,否则返回 false >= 或 ge 逻辑运算符,判断符号左边是否大于或者等于右边,如果大于或者等于返回 true ,否则返回 false
&&
||
逻辑运算符,与操作赋。如果左右两边同为 true 返回 true ,否则返回
false
逻辑运算符,或操作赋。如果左右两边有任何一边为 true 返回 true ,否则返回 false
用来对一个空变量值进行判断 : null 、一个空 String 、空数组、 空
Map 、没有条目的 Collection 集合
! 或 not 逻辑运算符,非操作赋。如果对 true 取运算返回 false ,否则返回 true
empty
func(args) 调用方法 , func 是方法名, args 是参数,可以没有,或者有一个、多个参数 . 参数间用逗号隔开
使用场合:EL用在jsp页面上,在servlet中无效。因为jsp变成servlet时把el字段串解析成一定输出。
分析原理:
${me}
在tomcat,所有的jsp变成Servlet,解析${}取出里面内容me
分割成几部分,先看第一部分user,认为这是一bean,并且存在一定范围(page,request,ation),如果没找到,自动处理空指针异常;如找到就分析它的类型User,通过反射查看是否有username属性,如没有则报错。如有该属性username调用getUsername方法。
EL只能在jsp中使用,由服务器把jsp翻译成servlet(*.java)时加以处理,所在servlet中写上el没有效果。
3. EL 表达式的默认变量(内置变量)
隐含对象名称
pageContext
pageScope
requestScope
sessionScope
applicationScope
描 述
对应于JSP页面中的pageContext对象(注意:取的是pageContext对象。)
代表page域中用于保存属性的Map对象
代表request域中用于保存属性的Map对象
代表session域中用于保存属性的Map对象
代表application域中用于保存属性的Map对象 隐含对象名称
param
描 述
表示一个保存了所有请求参数的Map对象
${param.参数名}
paramValues表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[]
${paramValues.参数名[下标]}
header
headerValues“-”
cookie
initParam
表示一个保存了所有http请求头字段的Map对象
同上,返回string[]数组。注意:如果头里面有,例Accept-Encoding,则要headerValues[“Accept-Encoding”]
表示一个保存了所有cookie的Map对象
${}
表示一个保存了所有web应用初始化参数的map对象
当使用.来操作时,表示有get方法
当使用pageScope 、 requestScope 、 sessionScope 、 applicationScope是
getAttribute(“变量名”);
在EL出现:
1. 内置对象:
2. 不是内置对象:就认为肯定保存在一定作用范围内,getAttribute(“变量名”),从小到大搜索。
requestScope跟uest区别:
requestScope肯定表示从request作用范围内去查找,而且仅仅把request当做一个保存对象的容器而已。主要用于提取作用范围内的值。一般是在经过设置值(ribute方法)之后使用。
uest得到的是一个完整的对象,当做普通对象来用。
pageContext
访问者:虚拟路径,访问应用上下文路径------字符串
开发者:在java (servlet) 应用上下文 ServletContext对象
用EL提取上下文:${tPath}
相当于( uest().getContextPath() )
EL好处:
1. 简洁
2. 对于空值处理很好
3. 对于异常处理很好
发布者:admin,转转请注明出处:http://www.yc00.com/news/1690578594a372430.html
评论列表(0条)