一、EL表达式概述

JSP主要的作用是实现动态页面,而动态页面中最主要的作用就是把数据动态显示。
目前,JSP中显示数据主要用表达式实现,即<%=%>可以说,EL (Expression Language)表达式语言,就是用来替代<%=%>的,EL比<%=%>更简洁,更方便。

二、EL表达式基本语法

  • EL的基本语法是$ { }结束
    例如:输出名字是username的请求参数

    ${param.username}
    

    param是EL中的内置对象表达式:

    <%=request.getParameter(“username")%>
    
  • 除了语法不同EL更为“贴心”,当username为null时,EL就不显示。而表达式会显示null

  • 与JSP表达式区别:JSP中使用的变量是脚本变量,而EL中的变量都是作用域变量,要操作的变量都在作用域中。

  • EL表达式是可以替代JSP页面中数据访问时的复杂编码可以自动转换类型,并且使JSP的开发变得更加简单。

  • 在Servlet或JSP中保存数据request.setAttribute(“username”,“LiYang”);
    在JSP中访问数据姓名:${username}

  • 按照 page →request → session →application的作用域顺序依次查找,找到即返回,最终找不到返回null。

三、内置对象

隐含对象 描述
pageScope page 作用域
requestScope request 作用域
sessionScope session 作用域
applicationScope application 作用域
param Request 对象的参数,字符串
paramValues Request对象的参数,字符串集合
header HTTP 信息头,字符串
headerValues HTTP 信息头,字符串集合
initParam 上下文初始化参数
cookie Cookie值
pageContext 当前页面的pageContext
  • EL中有两个与请求参数有关的内置对象

    • param用来输出请求参数的值,格式为$ {param.请求参数名字},如下代码所示:

      使用表达式:

      <%=reqest.getParameter("name")%>
      

      使用EL:

      ${param.name}
      
    • paramValues:用来获取一对多的参数值,返回一个数组。比如某请求参数是通过checkbox传递的,名字为hobbies,要输出所有hobbies值中的第一个值,可以使用如下两种方式:
      使用表达式:

      <%=request.getParameterValues("hobbies")[0]%>
      

      使用EL:

      ${paramValues.hobbies[0]}
      
  • 有属性有关的内置对象

    • pageScope:页面范围,即pageContext范围
    • requestScope:请求范围
    • sessionScope:会话范围
    • applicationScope:上下文范围
  • 与请求头有关的内置对象

    • header:输出某一个请求头的值。

      输出请求头accept的值

      $(header.accept}
      
    • headerValues:如果某个请求头的值有多个,则使用headerValues返回一个数组。如下代码所示:

      ${headerValues.cookie[0]}
      

    上述代码将返回请求头cookie中的第一个值,例如:
    JSESSIONID=A6A22CA4AEE8F9E1111422C889740B24

  • 其他两个内置对象:cookie和initParam

    • cookie:用来获取cookie的值
    ${cookie.JSESSIONID.value}
    

    上述代码将输出名字为JSESSIONID的cookie的值。

    • initParam:用来输出上下文参数的值。

      在web.xml中配置上下文参数:

      <context-param><param-name>path</param-name><param-value>/WEB-INF/props</param-value>
      </context-param>
      

      在JSP中使用EL输出path的值:

      ${initParam.path}
      
  • 最特殊的内置对象:PageContext

    EL中的pageContext对象可以调用PageContext类中所有符合规范的getXxx方法,如PageContext类中有如下方法:

    public abstract ServletRequest getRequest()可以通过如下EL调用该方法:

    ${pageContext.request}
    

    该方法将输出请求对象,如下所示:

    org.apache.catalina.gore.ApplicationHttpRequest@1b98cbb
    既然该EL返回的是真正的请求对象,那么就可以继续调用HttpServletRequest中的其他getXxx方法,如:

    ${pageContext.request.remoteAddr}
    

    上述表达式将调用请求中的getRemoteAddr方法,输出其返回值,例如:127.0.0.1

四、运算符

  • 算术运算符

    EL中支持五种算术运算符,有 +实现加法运算;- 实现减法运算;* 实现乘法运算;/ 或div实现除法运算;% 或mod实现求模运算。

    如下代码所示:

    $19+2}<br>
    ${19-2]<br>
    ${19*2]<br>
    ${19/2}<br>
    ${19%2]<br>
    
  • 比较运算符

    EL中有6种比较运算符,可以对值进行比较,返回值为true或fasle。

    运算符 含义
    ==、eq 等于
    <、lt 小于
    > 、gt 大于
    <=、le 小于等于
    >=、ge 大于等于
  • 其他运算符

    • EL中除了有上面学习的算术、比较、逻辑运算符外,还有三种其他运算符。

    • empty运算符:判断值是否为null,如果是null,返回true,否则返回false。

      以下几种情况为空:

      1. 值为null值的时候,为空
      2. 值为空串的时候,为空
      3. 值是Object类型数组,长度为零的时候
      4. list集合,元素个数为零
      5. map集合,元素个数为零
    • 三目运算符:${A?B:C }如果A为true,则执行B,如果A为false,则执行C。

    • ( )运算符:通过()可改变优先级。

      EL中虽然提供了运算符,但是目前看没有太大意义,不可能直接输出一些运算结果,而往往运算结果将作为流程控制使用。

五、总结

  • 可见使用EL能大大简化JSP中表达式
  • 然而,EL不能实现流程控制,所以目前看并不能实现复杂的逻辑,必须结合标签一起使用,才能发挥更大作用。
  • .JSP的标准标签库JSTL,结合EL一起使用,将能够大大简化JSP。

EL表达式基础语法总结相关推荐

  1. el表达式的语法_「手把手教python3接口自动化」「第三章」:Python3 语法

    1 Python3 语法 1.1 基础语法 [编码] 默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串. 当然你也可以为源码文件指定不同的编码. [标 ...

  2. Java 8 Lambda表达式基础语法

    /*** * 一.Lambda 表达式的基础语法:* Java8中引入了要给新的操作符 "->" 该操作符称作箭头操作符 或 Lambda操作符* 箭头操作符将Lambda拆 ...

  3. 一文快速了解EL表达式基础知识

    目录 EL表达式是干什么用的? EL表达式出现在JSP中主要是: EL表达式很好用,基本的语法格式: EL表达式的使用: EL表达式优先从小范围中读取数据. EL表达式中有四个隐含的隐式的范围: EL ...

  4. JSP第四篇【EL表达式介绍、获取各类数据、11个内置对象、执行运算、回显数据、自定义函数、fn方法库】...

    什么是EL表达式? 表达式语言(Expression Language,EL),EL表达式是用"${}"括起来的脚本,用来更方便的读取对象! EL表达式主要用来读取数据,进行内容的 ...

  5. JavaWeb——EL表达式

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

  6. EL表达式JSON应用

    由于之前在学校写的jsp页面都是夹杂着java代码的,所以之前写了个jsp,满满的<%%>和java代码,老师说那样太不美观了啊!!!要全部用EL表达式替代了.本人还是太笨了,弄了一上午才 ...

  7. el表达式 循环_EL表达式+JSTL+Ajax 047

    El表达式的语法: ${表达式} 注意: 自带响应功能 El表达式的使用: El表达式获取请求数据 获取用户请求数据(请求实体) ${param.键名} 获取请求实体中一个键一个值的数据 ${para ...

  8. 跟小博老师一起学JSP ——EL表达式

    为了尽可能减少JSP中的JAVA代码简化JSP开发,相关的新技术被引入了进来.EL表达式将原有的JAVA代码化繁为简,提升JSP代码的阅读性,也提高了开发效率. EL表达式 EL表达式全称叫Expre ...

  9. 28. EL 表达式 以及 JSTL 标签库

    28. EL 表达式 以及 JSTL 标签库 1.EL 表达式 a)什么是 EL 表达式,EL 表达式的作用? EL 表达式的全称是:Expression Language.是表达式语言. EL 表达 ...

最新文章

  1. Yann LeCun等最新研究:如何对未来实例分割进行预测?
  2. 使用VAE、CNN encoder+孤立森林检测ssl加密异常流的初探——真是一个忧伤的故事!!!...
  3. yield %%% generator
  4. linux ie 插件目录在哪个文件夹里,Linux下的IE浏览器使用方法[图]
  5. (转)CentOS分区操作详解
  6. SQL中Group By的用法整理
  7. Python - 排序( 插入, 冒泡, 快速, 二分 )
  8. java大数 bigin_Java大数操作
  9. UI交互设计师在准备简历时应该注意什么?
  10. 我为什么要放弃RESTful,选择拥抱GraphQL?
  11. 群体智能之人工蜂群算法及其改进(ABC)
  12. 关于CAN APE的使用一些记录
  13. 我是一名自由职业白帽黑客
  14. CANoe CAPL文件操作目录合集
  15. 计算机本地连接没有有效ip配置,本地连接没有有效的ip配置,详细教您本地连接没有有效的ip配置怎么解决...
  16. 003.原生数据类型使用陷阱 Pitfall of Primitive Data Type
  17. APP产品经理(一)
  18. PHP微信扫码关注公众号并授权登录源码
  19. 【梁小国】教你怎么签自己的名字
  20. 这2个在线资源网千万别错过,老司机人手一份,一年省下好几千

热门文章

  1. 【机器学习】【隐马尔可夫模型-3】后向算法:算法详解+示例讲解+Python实现
  2. 女神节送什么给礼物女友好,2022女神节送礼合集
  3. 欢迎使通过网页免费下载全网歌曲【转载】
  4. 【inline、inline-block间的空隙】
  5. 日本全新超级计算机ABCI向“全球最快”目标冲击
  6. 日本计划建造世界上速度最快的超级计算机
  7. 1月第4周安全回顾 移动安全受关注 黑客威胁公共设施
  8. c语言输出字符的utf码,C语言里如何把GBK码转换为UTF8?
  9. 力扣(226.112)补9.8
  10. 大snbsp;汪小菲nbsp;闪婚