JSP中EL表达式的用法

JSP中EL表达式的用法

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条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信