EL表达式

1.EL表达式

1.1. EL表达式概述

EL(Expression Language)是一门表达式语言,它对应<%=…%>。我们知道在JSP中,表达式会被输出,所以EL表达式也会被输出。

EL表达式的格式: … ,例如: {…},例如: ,例如:{1+2}。

在使用EL表达式时,要求page指令的isELIgnored属性为false。这样JSP在编译成.java时,才不会忽略EL表达式。

如果你希望某个EL表达式被JSP编译器忽略,那么可以在EL表达式之前添加“\”,例如:${1+2}。

1.2.EL表达式运算(熟练)

我们可以使用EL表达式来进行简单的逻辑运算

运算符说明范例结果
+${17+5}22
-${17-5}12
*${17*5}85
/或div 17 / 5 或 {17/5}或 17/5{17 div 5}3
%或mod取余KaTeX parse error: Expected '}', got 'EOF' at end of input: {17%5}或{17 mod 5}2
==或eq等于 5 = = 5 或 {5==5}或 5==5{5 eq 5}TRUE
!=或ne不等于 5 ! = 5 或 {5!=5}或 5!=5{5 ne 5}FALSE
<或lt小于 3 < 5 或 {3<5}或 3<5{3 lt 5}TRUE
>或gt大于 3 > 5 或 {3>5}或 3>5{3 gt 5}FALSE
<=或le小于等于 3 < = 5 或 {3<=5}或 3<=5{3 le 5}TRUE
>=或ge大于等于 3 > = 5 或 {3>=5}或 3>=5{3 ge 5}FALSE
&&或and并且KaTeX parse error: Expected '}', got '&' at position 6: {true&̲&false}或{true and false}FALSE
!或not ! t r u e 或 {!true}或 !true{not true}FALSE
||或or或者${true
empty是否为空 e m p t y “” ,可以判断字符串、数组、集合的长度是否为 0 ,为 0 返回 t r u e 。 e m p t y 还可以与 n o t 或 ! 一起使用。 {empty “”},可以判断字符串、数组、集合的长度是否为0,为0返回true。empty还可以与not或!一起使用。 empty“”,可以判断字符串、数组、集合的长度是否为0,为0返回trueempty还可以与not!一起使用。{not empty “”}TRUE
<h1>EL表达式运算测试</h1>
<p>\${1+1}</p>
<p>${2-1}</p>
<p>${2*3}</p>
<p>${9/3}</p>
<p>${9%3}</p>
<p>${9 div 3}</p>
<p>${9 mod 3}</p>


<p>${9 == 3}  ${"a" eq "a"}</p>
<p>${9 != 3}  ${"a" ne "a"}</p>
<p>${9 > 3}  ${9 < 3}</p>
<p>${9 lt 3}  ${9 gt 3}</p>
<p>${9 >= 3}  ${9 <= 3}</p>
<p>${9 >= 3 && 10 >= 3}  ${9 <= 3 and 8 <= 3}</p>
<p>${ !(9 >= 33)}  ${not (9 <= 3) }</p>
<p>${9 >= 3 || 10 >= 3}  ${9 <= 3 or 3 <= 8}</p>
<p>${not empty ""} </p>
<p>${empty null} </p>

1.3.EL表达式操作对象

操作变量和常量: n a m e 、 {name}、 name{8}; java jspj存在java片段的<%%>

操作List和数组: l i s t [ 0 ] 、 {list[0]}、 list[0]{arr[0]};

操作bean的属性: p e r s o n . n a m e 、 {person.name}、 person.name{person[‘name’]},对应person.getName()方法;

操作Map的值: m a p . k e y 、 {map.key}、 map.key{map[‘key’]},对应map.get(key)。

1.4.EL表达式内置对象 jsp 9个 11个

在EL表达式中,无需创建就可以使用的对象称之为EL隐藏(隐含、内置)对象。在EL中一共有11个隐藏对象,它们都与Map(key-value)相似。其中10个是Map,一个是 PageContext;

1.4.1.参数隐藏对象

param:param是Map<String,String>类型!param对象可以用来获取参数,与request.getParameter()方法相同。Url key

在这里插入图片描述

注意,在使用EL获取参数时,如果参数不存在,返回的是空字符串,而不是null。这一点与使用request.getParameter()方法是不同的。

paramValues:paramValues是Map<String, String[]>类型,当一个参数名,对应多个参数值时可以使用它。

在这里插入图片描述

header:header是Map<String,String>类型,用来获取请求头。

在这里插入图片描述

headerValues:headerValues是Map<String,String[]>类型。当一个请求头名称,对应多个值时,使用该对象,这里就不在赘述。

initParam:initParam是Map<String,String>类型。它对应web.xml文件中的参数。

在这里插入图片描述

cookie:cookie是Map<String,Cookie>类型,其中key是Cookie的名字,而值是Cookie对象本身。

在这里插入图片描述

1.4.2.域隐藏对象

使用EL表达式最为常用的就是获取域对象中保存的数据。例如: p a g e S c o p e . x x x ,表示获取在 p a g e C o n t e x t 保存的数据。当然 {pageScope.xxx},表示获取在pageContext保存的数据。当然 pageScope.xxx,表示获取在pageContext保存的数据。当然{pageScope[‘xxx’]}是相同的!

pageScope:pageScope是Map<String,Object>类型,${pageScope.xxx}的功能相等与pageContext.getAttribute(“xxx”)。两者的区别在于,前者在数据不存在时返回空字符串,而后者返回null。

在这里插入图片描述

requestScope:requestScope是Map<String, Object>类型,装载了request对象中的所有数据;

sessionScope:sessionScope是Map<String, Object>类型,装载了session对象中的所有数据;

applicationScope:applicationScope是Map<String, Object>类型,装载了application对象中的所有数据;

当EL中给出的不是隐藏对象时,表示在四个域中查找数据。例如:${a},表示

在${pageScope.a}中查找,如果找到就返回;

在${requestScope.a}中查找,如果找到就返回;

在${sessionScope.a}中查找,如果找到就返回;

在${applicationScope.a}中查找,如果找到就返回,找不到就返回空字符串。

1.4.3.PageContext对象

pageContext:pageContext是PageContext类型!可以使用pageContext对象调用getXXX()方法,例如pageContext.getRequest,可以${pageContext.request}。

Expression说明
${pageContext.request.queryString}pageContext.getRequest().getQueryString();
${pageContext.request.requestURL}pageContext.getRequest().getRequestURL();
${pageContext.request.contextPath}pageContext.getRequest().getContextPath();
${pageContext.request.method}pageContext.getRequest().getMethod();
${pageContext.request.protocol}pageContext.getRequest().getProtocol();
${pageContext.request.remoteUser}pageContext.getRequest().getRemoteUser();
${pageContext.request.remoteAddr}pageContext.getRequest().getRemoteAddr();
${pageContext.session.new}pageContext.getSession().isNew();
${pageContext.session.id}pageContext.getSession().getId();
${pageContext.servletContext.serverInfo}pageContext.getServletContext().getServerInfo();
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值