当前位置: 首页 > news >正文

【JavaWeb】EL表达式

目录

1.EL表达式概述

2.EL表达式运算

3.EL表达式操作对象

4.EL表达式内置对象

4.1.参数隐藏对象

4.2.域隐藏对象

4.3.PageContext对象


1.EL表达式概述

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

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

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

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

2.EL表达式运算

运算符说明范例结果
+${17+5}22
-${17-5}12
*${17*5}85
/或div${17/5}或${17 div 5}3
%或mod取余${17%5}或${17 mod 5}2
==或eq等于${5==5}或${5 eq 5}TRUE
!=或ne不等于${5!=5}或${5 ne 5}FALSE
<或lt小于${3<5}或${3 lt 5}TRUE
>或gt大于${3>5}或${3 gt 5}FALSE
<=或le小于等于${3<=5}或${3 le 5}TRUE
>=或ge大于等于${3>=5}或${3 ge 5}FALSE
&&或and并且${true&&false}或${true and false}FALSE
!或not${!true}或${not true}FALSE
||或or或者${true||false}或${true or false}TRUE
empty是否为空${empty “”},可以判断字符串、数组、集合的长度是否为0,为0返回true。empty还可以与not或!一起使用。${not empty “”}TRUE

3.EL表达式操作对象

操作变量和常量:${name}、${8}

操作List和数组:${list[0]}、${arr[0]}

操作bean的属性:${person.name}等价于${person['name']},对应person.getName()

操作Map的值:${map.key}等价于${map['key']},对应map.get(key)

4.EL表达式内置对象

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

4.1.参数隐藏对象

  • param

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

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

  • paramValue

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

  • 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对象本身

4.2.域隐藏对象

使用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.a}中查找,如果找到就返回

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

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

4.3.PageContext对象

  • pageContext

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

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();
http://www.lryc.cn/news/518388.html

相关文章:

  • Angular由一个bug说起之十三:Cross Origin
  • WEB前端-2
  • 高斯混合模型 (Gaussian Mixture Model, GMM) 算法详解与PyTorch实现
  • web作业
  • Tauri教程-基础篇-第一节 Tauri项目创建及结构说明
  • 计算机网络之---物理层标准与协议
  • Idea日志乱码
  • tk GMV MAX素材范围投放指南
  • TANGO - 数字人全身动作生成
  • springboot集成整合工作流,activiti审批流,整合实际案例,流程图设计,流程自定义,表单配置自定义,代码demo流程
  • Windows 10 ARM工控主板连接I2S音频芯片
  • 单元测试MockitoExtension和SpringExtension
  • 网络安全 | WAF防护开通流程与技术原理详解
  • 模型 断裂点理论(风险控制)
  • 02.MPLS动态LSP配置实验
  • MySQL 中的Buffer Pool
  • 修复微pe系统uefi引导损坏windows failed to start...
  • 【Vue3中使用crypto-js】crypto-js加密解密用法
  • JavaWeb开发(九)JSP技术
  • PADS Lyout布局布线实战技巧:布线优化及解决碎铜问题
  • 上下游服务间解耦的技术与管理
  • 如何解决HTML和CSS相关的问题,什么情况下会导致元素被遮挡?
  • Infineon PSoC 4 CapSense ModusToolbox IDE - 系统生态篇
  • [算法]布隆过滤器
  • 基于云效 Windows 构建环境和 Nuget 制品仓库进行 .Net 应用开发
  • Backend - C# asp .net core
  • 【合作原创】使用Termux搭建可以使用的生产力环境(九)
  • 使用Supervisor在Ubuntu中实现后台自启动服务
  • AIDD-人工智能药物设计-人工智能驱动的罕见病药物发现
  • 安卓硬件加速hwui