JavaWeb——EL表达式

在JSP开发中,为了获取Servlet域对象中存储的数据,需要书写很多的Java代码,这样会使JSP页面看起来十分的混乱,难以维护,为此,在JSP2.0规范中提供了EL表达式。EL是Expression Language的缩写,它是一种简单的数据访问语言。

文章目录

  • 一、初识EL
  • 二、EL中的运算符
    • 1.点运算符(.)
    • 2.方括号运算符([])
    • 3.算术运算符
    • 4.比较运算符
    • 5.逻辑运算符
    • 6.empty运算符
    • 7.条件表达式
    • 8.“()”运算符
  • 三、EL隐式对象


一、初识EL

EL表达式的语法,都是用“${ }”表示的。
关于EL表达式和使用Java代码的区别:

在Servlet中:

request.setAttribute("username","zhangsan");
request.setAttribute("password","123");
  • 在JSP中使用Java脚本:
用户名:<%=request.getAttribute("username")%><br />
密码:  <%=request.getAttribute("password")%>
  • 使用EL表达式
用户名:${username}<br />
密码:  ${password}

EL表达式不仅能获取Servlet中存储的数据,也能简化JSP中的代码量,使程序简单易维护,另外,当域对象里面的值不存在时,使用EL表达式获取域对象里面的值返回空字符串;而使用Java脚本方式获取,返回值是null,会报空指针异常

二、EL中的运算符

1.点运算符(.)

EL表达式中的点运算符,用于访问JSP页面中某些对象的属性,如JavaBean对象、List集合、Array数组等。

<!--  访问user对象的username属性-->
${user.username}

2.方括号运算符([])

EL表达式中的方括号运算符与点运算符的功能相同,都用于访问JSP页面中某些对象的属性。当获取的属性名中包含一些特殊符号,如“_”或“-”“?”等并非数字或字母的符号,就只能使用方括号运算符来访问该属性。

<!--不能使用${user.user_name}-->
${user["user_name"]}
  • 点运算符和方括号运算符在某种情况下可以互换,如${user.username}等价于${user["username"]}
  • 方括号运算符还可以访问List集合或数组中指定索引的某个元素,如表达式${users[0]}用于访问集合或数组中第一个元素。在这种情况下,只能使用方括号运算符,不能使用点运算符。
  • 方括号运算符和点运算符可以相互结合使用,如${users[0].username},表示访问集合或者数组中的第一个元素的username属性。

3.算术运算符

算数运算符说明算术表达式结果
+${1+1}2
-${1-1}0
*${1*1}1
/ (或div)${1/1}或${1 div 1}1
% (或mod)取余(取模)${1%1}或${1 mod 1}0

4.比较运算符

EL表达式中的比较运算符用于比较两个操作数的大小,操作数可以是各种常量、EL表达式、EL变量,所有的运算执行结果都是布尔类型。

比较运算符说明算术表达式结果
==(或eq)等于${10==2}或${10 eq 2}false
!=(或ne)不等于${10!=2}或${10 ne 2}true
<(或lt)小于${10<2}或${10 lt 2}false
>(或gt)大于${10>2}或${10 gt 2}true
<=(或le)小于等于${10<=2}或${10 le 2}false
>=(或ge)大于等于${10>=2}或${10 ge 2}true

5.逻辑运算符

逻辑运算符说明算术表达式结果
&&(and)逻辑与${true&&false}或${true and false}false
|| (or)逻辑或${false||true}true
!(not)逻辑非${!=true} 或${not true}false

6.empty运算符

EL表达式中的empty运算符用于判断某个对象是否为null或"",结果为布尔类型,其基本的语法格式如下:

${empty var}
  • var变量不存在(没有定义),结果返回true
  • var变量的值为null,结果返回true
  • var变量引用集合(Set、Map、List)类型对象,并且在集合对象中不包含任何元素时,结果返回true

7.条件表达式

EL表达式中条件运算符用于执行某种条件判断,类似于Java中的if-else语句,其语法格式如下:

${A?B:C}

表达式A的计算结果为布尔类型:

  • 如果表达式A的计算结果为true,就执行表达式B,并返回B的值
  • 如果表达式A的计算结果为false,就执行表达式C,并返回C的值

8.“()”运算符

EL表达式中的圆括号用于改变其他运算符的优先级。


三、EL隐式对象

不需要new就能使用的对象,自带的对象

  • 作用域访问对象(EL隐式对象):pageScope、requestScope、sessionScope、applicationScope
  • 参数访问对象
  • JSP隐式对象
隐含对象名称描述
pageContext对应于JSP页面中的pageContext对象
pageScope代表page域中用于保存属性的Map对象
requestScope代表request域中用于保存属性的Map对象
sessionScope代表session域中用于保存属性的Map对象
applicationScope代表application域中用于保存属性的Map对象
param表示一个保存了所有请求参数的Map对象
paramValues表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是String类型数组
header表示一个保存了所有HTTP请求头字段的Map对象
headerValues表示一个保存了所有HTTP请求头字段的Map对象,返回的是String类型数组
cookie用来取得使用者的cookie值,cookie的类型是Map
initParam表示一个保存了所有Web应用初始化参数的Map对象

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/485252.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一文读懂人工智能产业最新发展趋势

来源&#xff1a;世界物联网博览会作者&#xff1a;赛迪智库人工智能产业形势分析课题组当前&#xff0c;以新一代人工智能为代表的科技和产业革命正在孕育兴起。数字化、网络化、智能化的信息基础设施加速构建&#xff0c;以信息通信、生命、材料科学等交叉融合为特征的集成化…

python的变量命名及其使用

以下内容皆从书本自学 &#xff0c;归纳。 1. 变量名只能包含字母、数字和下划线。变量名可以字母或下划线打头&#xff0c;但不能以数字打头&#xff0c;例如&#xff0c;可将变量命名为message_1&#xff0c;但不能将其命名为1_message。 2. 变量名不能包含空格&#xff0c;但…

【剑指offer】面试题55 - I. 二叉树的深度(java)

输入一棵二叉树的根节点&#xff0c;求该树的深度。从根节点到叶节点依次经过的节点&#xff08;含根、叶节点&#xff09;形成树的一条路径&#xff0c;最长路径的长度为树的深度。 例如&#xff1a; 给定二叉树 [3,9,20,null,null,15,7]&#xff0c; 3 / \ 9 20 …

半导体的过去、现在和未来

文章来源&#xff1a;中科院半导体所01半导体是信息化的基础上个世纪半导体大规模集成电路、半导体激光器、以及各种半导体器件的发明&#xff0c;对现代信息技术革命起了至关重要的作用&#xff0c;引发了一场新的全球性产业革命。信息化是当今世界经济和社会发展的大趋势&…

计算机网络——奈氏准则(奈奎斯特定理)

奈奎斯特定理——奈氏准则&#xff08;理想状态&#xff09; 奈氏准则&#xff1a;在理想低通&#xff08;没有噪声、带宽有限&#xff09;的信道中&#xff0c;为了避免码间串扰&#xff0c;极限码元传输率为2WBaud。其中W是理想低通信道的带宽&#xff0c;单位为Hz。若用V表…

LUOGU P4016 负载平衡问题

题目描述 GG 公司有 nn 个沿铁路运输线环形排列的仓库&#xff0c;每个仓库存储的货物数量不等。如何用最少搬运量可以使 nn 个仓库的库存数量相同。搬运货物时&#xff0c;只能在相邻的仓库之间搬运。 输入输出格式 输入格式&#xff1a; 文件的第 11 行中有 11 个正整数 nn …

【剑指offer】面试题55 - II:平衡二叉树(Java)

输入一棵二叉树的根节点&#xff0c;判断该树是不是平衡二叉树。如果某二叉树中任意节点的左右子树的深度相差不超过1&#xff0c;那么它就是一棵平衡二叉树。 示例 1: 给定二叉树 [3,9,20,null,null,15,7] 3 / \ 9 20 / \ 15 7 返回 true 。 示例 2: 给定二…

计算机网络——CSMA/CD最小帧长相关题目

计算机网络——CSMA/CD最小帧长问题 本篇博客主要讲解有关CSMA/CD最小帧长求解相关例题&#xff0c;关于CSMA/CD详细详解请参考博客&#xff1a;CSMA/CD协议分析笔记 例题一、假定1km长的CSMA/CD网络的数据率为1Gbit/s。设信号在网络上的传输速率为200000km/s。求能够使用此协…

AI式剥削:数据标注人员日薪低至51块钱

来源&#xff1a;AI前线编译&#xff1a;核子可乐、钰莹最新论文指出&#xff0c;AI 行业正在残酷压榨刚刚兴起的全球零工经济体系。现代人工智能依赖各种算法处理规模达数百万的示例、图像或文本素材。但在此之前&#xff0c;首先需要由工作人员在图片数据集中手动标记出对象&…

SpringCloud03 Ribbon知识点、 Feign知识点、利用RestTemplate+Ribbon调用远程服务提供的资源、利用feign调用远程服务提供的资源、熔断...

1 远程服务资源的调用 1.1 古老的套路 在微服务出现之前&#xff0c;所有的远程服务资源必须通过RestTemplate或者HttpClient进行&#xff1b;但是这两者仅仅实现了远程服务资源的调用&#xff0c;并未提供负载均衡实现&#xff0c;所以程序员必须自己实现负载均衡功能&#xf…

【剑指offer】面试题56 - I:数组中数字出现的次数 I

一个整型数组 nums 里除两个数字之外&#xff0c;其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n)&#xff0c;空间复杂度是O(1)。 示例 1&#xff1a; 输入&#xff1a;nums [4,1,4,6] 输出&#xff1a;[1,6] 或 [6,1] 示例 2&#xff1a;…

关于考研与工作(人生规划)的个人思考

迷茫——人生的常态 今年是大学的第四年&#xff0c;考研结束的这几天&#xff0c;也对自己能不能考上有了大概的掌握。说实话&#xff0c;当时为什么决定考研&#xff1f;一是&#xff0c;当时上一级的师哥师姐几乎很少有不考研直接找工作的&#xff0c;很难找到不考研的另外…

一个没有意义的宇宙我们很难想象

© Pixabay来源&#xff1a;利维坦利维坦按&#xff1a;按照人择理论&#xff0c;“被观测的宇宙环境&#xff0c;必须允许观测者的存在”&#xff0c;我们似乎有理由相信&#xff0c;宇宙之存在有赖于观测者&#xff0c;不过&#xff0c;这个观测者一定是我们人类吗&#…

SpringCloud(二) 服务注册与发现Eureka

1.eureka是干什么的&#xff1f; 上篇说了&#xff0c;微服务之间需要互相之间通信&#xff0c;那么通信就需要各种网络信息&#xff0c;我们可以通过使用硬编码的方式来进行通信&#xff0c;但是这种方式显然不合适&#xff0c;不可能说一个微服务的地址发生变动&#xff0c;那…

【剑指offer】面试题56 - II:数组中数字出现的次数 II(Java)

在一个数组 nums 中除一个数字只出现一次之外&#xff0c;其他数字都出现了三次。请找出那个只出现一次的数字。 示例 1&#xff1a; 输入&#xff1a;nums [3,4,3,3] 输出&#xff1a;4 示例 2&#xff1a; 输入&#xff1a;nums [9,1,7,9,7,9,7] 输出&#xff1a;1 限…

Java打印三角形(双层for循环)

Java打印三角形(双层for循环) 1.第一个三角形&#xff1a; 打印样式&#xff1a; 外层for循环控制行数&#xff0c;内层for循环控制“*”的个数 public static void demo01(){//行数&#xff1a;4行for(int i1;i<4;i){/*找规律&#xff1a;第一行&#xff1a;1个*第二行…

深度学习后,图灵奖得主Bengio研究核心是什么?因果表示学习

机器之心报道编辑&#xff1a;魔王、杜伟在近日发表的一篇论文中&#xff0c;图灵奖得主 Yoshua Bengio 等详细介绍了其团队当前的研究重心&#xff1a;将机器学习与因果推理相结合的因果表示学习。研究者不仅全面回顾了因果推理的基础概念&#xff0c;并阐释了其与机器学习的融…

WPF使用Canvas绘制可变矩形

WPF使用Canvas绘制可变矩形 原文:WPF使用Canvas绘制可变矩形版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 https://blog.csdn.net/WANGYAN9110/article/details/38130661 1、问题以及解决办法 最近因为项目需要&#xff0c;需要实现一个位置校对…

Java中关于自增自减

Java中关于自增和自减 关于自增和自减&#xff0c;一直困扰着我&#xff0c;总是学完了当时明白&#xff0c;过了没多长时间又忘了&#xff0c;学的也不牢固。经过老师这一次的讲解&#xff0c;总结的这篇博客&#xff0c;如有错误还请指正。 第一题&#xff1a; 加上括号好看…

【剑指offer】面试题57:和为s的两个数字(Java)

输入一个递增排序的数组和一个数字s&#xff0c;在数组中查找两个数&#xff0c;使得它们的和正好是s。如果有多对数字的和等于s&#xff0c;则输出任意一对即可。 示例 1&#xff1a; 输入&#xff1a;nums [2,7,11,15], target 9 输出&#xff1a;[2,7] 或者 [7,2] 示例 2…