Javaweb-基于JSP的EL表达式学习笔记

Javaweb-基于JSP的EL表达式

EL概述

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

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

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

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

EL表达式操作对象方式

  • 操作变量和常量: n a m e {name}、 {8};
  • 操作List和数组: l i s t [ 0 ] {list[0]}、 {arr[0]};
  • 操作bean的属性: p e r s o n . n a m e {person.name}、 {person[‘name’]},对应person.getName()方法;
  • 操作Map的值: m a p . k e y {map.key}、 {map[‘key’]},对应map.get(key)

EL运算符

运算符 说明 范例 结果
+ ${17+5} 22
- ${17-5} 12
* ${17*5} 85
/或div 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 eq 5} true
!=或ne 不等于 5 ! = 5 {5!=5}或 {5 ne 5} false
<或lt 小于 3 < 5 {3<5}或 {3 lt 5} true
>或gt 大于 3 > 5 {3>5}或 {3 gt 5} false
<=或le 小于等于 3 < = 5 {3<=5}或 {3 le 5} true
>=或ge 大于等于 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}或 {not true} false
||或or 或者 t r u e f a l s e {true\|\|false}或 {true or false} 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或!一起使用。 {not empty “”} true

EL内置对象

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

参数隐藏对象

注意:这些隐藏对象都是Map类型!

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

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

  • paramValues

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

扫描二维码关注公众号,回复: 8900544 查看本文章

  • header

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

  • headerValues:headerValues是Map<String,String[]>类型。当一个请求头名称,对应多个值时,使用该对象

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

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

域隐藏对象

使用EL表达式最为常用的就是获取域对象中保存的数据。例如:${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}中查找,如果找到就返回;

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

  • 在${applicationScope}中查找,如果找到就返回

页面上下文隐藏对象

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();
发布了161 篇原创文章 · 获赞 93 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/JunSIrhl/article/details/103993945