目录
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返回true。empty还可以与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(); |