在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对象

JavaWeb——EL表达式相关推荐

  1. JavaWeb EL表达式, JSTL标签及过滤器综合学习

    1.项目结构如右边图所示: (1)controller.filter包下面定义2个过滤器,EncodingFilter 类CheckUserFilter类(后面会有一个登陆验证的过滤器的测试学习), ...

  2. java 解析el表达式_Javaweb El表达式实例详解

    EL全称 Expression Language(表达式语言),是jsp2.0最重要的特性之一,可以利用EL表达式来访问应用程序中的数据,来消除jsp页面中的java脚本. el表达式的语法 expr ...

  3. Java-Web JSP指令、javabean和EL表达式

    目录 一.JSP指令 1.JSP指令概述 2.page指令 (1)pageEncoding和contentType (2)import (3)errorpage和isErrorpage (4)web. ...

  4. javaweb(09) EL表达式JSTL标签库(jsp相关,了解)

    javaweb(09) EL表达式&JSTL标签库(jsp相关,了解) EL表达式 简介和基本使用 EL 表达式的全称是:Expression Language.是表达式语言. EL 表达式的 ...

  5. javaweb之EL表达式和JSTL(总体第七篇)

    之前已经学习到我们Javaweb之Servlet,本文也是总体复习笔记的第七篇,有需要的朋友可以参考我主页的javaweb目录,参考其他笔记 一.EL语法学习 1.介绍搭建实验环境 (1)什么是EL表 ...

  6. el表达式 java_java基础学习:JavaWeb之EL表达式

    其他更多java基础文章: java基础学习(目录) 一.EL表达式 EL 全名为Expression Language.JSP中可以使用EL表达式,EL表达式是用"${}"括起来 ...

  7. IT兄弟连 JavaWeb教程 EL表达式获取对象的属性以及数组的元素

    使用${对象名.属性名} EL表达式语言可以使用点号运算符"."来访问对象的属性,例如表达式${customer.name}表示customer对象的name属性. 使用${对象名 ...

  8. javaweb学习总结(二十九)——EL表达式

    一.EL表达式简介 EL 全名为Expression Language.EL主要作用: 1.获取数据 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象.获取数 ...

  9. JavaWeb的jsp文件EL表达式简写优先级

    如题 EL表达式仅写共享数据名时的查找优先级, 优先级顺序为pageContext,requestScope,sessionScope再是applicationScope 因为某些原因,仅写出后面三个 ...

最新文章

  1. html边框绕着图片,CSS 边框
  2. android 简易定时器
  3. 把一列数据分割成两列
  4. Android简单实现将手机图片上传到服务器中
  5. 前端学习(3311):redux的state hook对象
  6. RabbitMQ从初学到精通一
  7. python程序发布 ubuntu_发布和运行(ubuntu下python服务器)
  8. 前端系统学习篇之HTML
  9. linux socket closeconnection,求助:socket的Connection refused
  10. 从零开始搭建神经网络并将准确率提升至85%
  11. Citrix MCS桌面管理技术解读
  12. Ubuntu 安装arm-linux-gcc编译器
  13. 史上最全的微信小程序代码大全分享
  14. 基于ZigBee的城市照明监控系统网关节点的软硬件设计
  15. SAS: PROC IMPORT简单入门介绍
  16. 一图看懂16个英语时态
  17. charles限制网速
  18. 请你来说一下数字证书是什么,里面都包含那些内容
  19. 二线法和四线法测量电阻的原理及区别
  20. 类的定义,成员函数和内置成员函数

热门文章

  1. 程序员面试金典 - 面试题 16.21. 交换和(哈希set)
  2. LeetCode 171. Excel表列序号(26进制转10进制)
  3. NumPy快速入门--复制/视图/深拷贝
  4. wpf计算字符大小占像素_LCD作为终端显示字符串的过程
  5. c2c旅游springboot开源_重量级开源的商城和SpringBoot等项目看看有没有正好是你需要的...
  6. python中的__new__概念(工厂
  7. 卖萌屋学术站发布!通往高效刷论文之路
  8. 别再搜集面经啦!小夕教你斩下NLP算法岗offer!
  9. 神经网络激活函数=生物转换器?
  10. docker挂载文件躺过的坑