JSP之EL表达式

一、概念

EL是JSP表达式语言,全称是ExpressionLanguage,使用EL的目的是简化在JSP中访问变量的方式,简单静态HTML与Java代码的耦合。

二、基本语法

${ EL Expression}

${ "Helloworld"}  //输出字符串常量

${ user.name} //输出user对象的name属性

${user["name"] }  //同上

[ ]与.的区别 

EL 提供 . 和 [ ] 两种运算符来导航数据。下列两者所代表的意思是一样的:

${ user.name} 等于${user["name"] }

和 [ ] 也可以同时混合使用,如下:

${sessionScope.shoppingCart[0].price}  //shoppingCart中第一项物品的价格

不过,以下两种情况,两者会有差异:

(1)当要存取的属性名称中包含一些特殊字符,要使用[ ],如. 或 – 等并非字母或数字的符号

例如:${user.my-Name }

上述是不正确的方式,应当改为:${user["My-Name"] }

 (2)想要动态获取变量值,要使用[ ]

${sessionScope.user[data]}

此时,data 是一个变量,假若data的值为"sex"时,那上述的例子等于${sessionScope.user.sex};

假若data 的值为"name"时,它就等于${sessionScope.user.name}

因此,如果要动态取值时,就可以用上述的方法来做,但无法做到动态取值

三、11个隐含/内置对象

术语定义

pageScope(域对象)

将页面范围的变量名称映射到其值,对象允许访问请求对象的属性,page域范围

${pageScope.objectName} 访问一个 JSP 中页面范围的对象;

${pageScope.objectName.attributeName} 访问对象的属性

requestScope(域对象)

将请求范围的变量名称映射到其值,该对象允许访问请求对象的属性,request域范围

${requestScope.objectName} 访问一个 JSP 请求范围的对象;${requestScope.objectName.attributeName} 访问对象的属性

sessionScope(域对象)

将会话范围的变量名称映射到其值,该对象允许访问会话对象的属性,session域范围

${sessionScope.objectName} 访问session范围的对象;

${sessionScope.objectName.attributeName} 访问对象的属性

applicationScope(域对象)

将应用程序范围的变量名称映射到其值,允许访问应用程序范围的对象,application域范围

${applicationScope.objectName} 访问应用程序范围的对象;

${applicationScope.objectName.attributeName} 访问对象的属性

param

将请求参数名称映射到单个字符串参数值,通过调用 ServletRequest.getParameter (String name) 获得其中getParameter (String) 方法返回带有特定名称的参数。

表达式 $(param.name) 相当于 request.getParameter (name)

paramValues

将请求参数名称映射到一个数值数组,通过调用 ServletRequest.getParameter (String name) 获得。它与 param 隐式对象非常类似,但它检索一个字符串数组而不是单个值。

${paramvalues.name) 相当于 request.getParamterValues(name)

header

将请求头名称映射到单个字符串头值,通过调用 ServletRequest.getHeader(String name) 获得。

表达式 ${header.name} 相当于 request.getHeader(name)

headerValues

将请求头名称映射到一个数值数组,通过调用 ServletRequest.getHeaders(String) 获得。它与头隐式对象非常类似。

表达式 ${headerValues.name} 相当于 request.getHeaderValues(name)

cookie

将 cookie 名称映射到单个 cookie 对象。向服务器发出的客户端请求可以获得一个或多个 cookie。

表达式 ${cookie.name.value} 返回带有特定名称的第一个 cookie 值;

如果请求包含多个同名的 cookie,则应该使用 ${headerValues.name} 表达式

initParam将上下文初始化参数名称映射到单个值,通过调用 ServletContext.getInitparameter(String name) 获得。

四、运算符

1.关系运算符

关系运算符

说明

范例

结果

== 或 eq

等于

${5==5}或${5eq5}

true

!= 或 ne

不等于

${5!=5}或${5ne5}

false

< 或 lt

小于

${3<5}或${3lt5}

true

> 或 gt

大于

${3>5}或{3gt5}

false

<= 或 le

小于等于

${3<=5}或${3le5}

true

>= 或 ge

大于等于

5}或${3ge5}

false

注意:在使用EL 关系运算符时,不能够写成:

${param.password1} = =${param.password2}   或     ${ ${param.password1 } = = ${param.password2 } }

而应写成   ${ param.password1 = =param.password2 } 

2. 逻辑运算符

逻辑运算符

范例

结果

&&或and

交集${A && B}或${A and B}

true/false

||或or

并集${A || B}或${A or B}

true/false

!或not

非${! A }或${not A}

true/false

3.Empty 运算符

${empty 变量名称 }  判断是否为null," ",空数组(size=0)返回布尔值

4.三目条件运算符 

${ A ? B : C}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值