EL表达式语言_el表达式的语法格式

EL表达式语言_el表达式的语法格式EL表达式语言1.El简介EL(ExpressionLanguage,表达式语言)是一-种简单的语言,可以方便地访问和处理应用程序数据,而无需使用JSP脚本元素(Scriptlet)或JSP表达式。EL最初是在标准标签库JSTL(JavaServerPageStandardTagLibrary)1.0中定义,从JSTL1.1开始,SUN公司将EL…

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

EL表达式语言

1. El简介

  • EL ( Expression Language ,表达式语言)是一-种简单的语言, 可以方便地访问和处理应用程序数据,而无需使用JSP脚本元素( Scriptlet )或JSP表达式。

  • EL最初是在标准标签库JSTL ( JavaServer Page Standard TagLibrary ) 1.0中定义,从JSTL 1.1开始, SUN公司将 EL表达式语言从JSTL规范中分离出来,正式独立为JSP 2.0标准规范之一。因此,只要是支持Servlet 2.4、JSP 2.0 以上版本的Web容器,都可以在JSP网页中直接使用EL.

2. El的启用

  • EL在容器默认配置下处于启用状态,每个JSP页面也可以通过page指令的isELIgnored属性单独设置其状态。<%@page isELIgnored = “true| false” %

3. EL的优点

  • EL表达式语言最大的优势是可以访便的访问JSP的隐含对象和JavaBean组件,完成使用”<% %>“或”<%= %>”完成的功能,使JSP页面从HTML代码中嵌入Java代码的混乱结构得以改善,提高了程序的可读性和易维护性。
  • 可以访问JSP的内置对象( pageContext、request、 session、 application等 ) ;
  • 简化了对JavaBean、 集合的访问方式;
  • 可以对数据进行自动类型转换;
  • 可以通过各种运算符进行运算;
  • 可以使用自定义 函数实现更加复杂的业务功能。

4. EL的语法

${ 
   表达式}

表达式可以是常量,变量,el隐含对象,el运算符和el函数

${ 
   "hello"} //输出字符串常量
${ 
   23.5} //输出浮点数常量
${ 
   23+ 5} //输出算术运算结果
${ 
   23> 5} //输出关系运算结果
${ 
   23||5} //输出逻辑运算结果
${ 
   23> 5?23:5} //输出条件运算结果
${ 
   empty username} //输出empty运算结果
${ 
   username} //查找输出变量值
${ 
   sessionScope.user.sex} //输出隐含对象中的属性值
${ 
   qst:fun(arg)} //输出自定义函数的返回值

4.1 EL常量

  • EL表达式中的常量包括:布尔常量、整形常量、浮点数常量、字符串常量和NULL常量。
  • 布尔常量,用于区分事物的正反两面,用true或false表示。例如: ${true}。
  • 整型常量,与Java中定义的整型常量相同,范围为Long.MIN VALUE到
    Long.MAX
    VALUE之间。例如: ${23E2}。
  • 浮点数常量,与Java中定义的浮点数常量相同,范围为Double.MIN VALUE到
    Double.MAX
    _VALUE之间。例如: ${23.5E-2}。
  • 字符串常量 ,是用单引号或双引号引起来的一连串字符。例如: ${” 你好!”}。
  • NULL常量,用于表示引|用的对象为空,用null表示,但在EL表达式中并不会输出”null”而是输出空。例如: ${null} ,页面会什么也不输出。

4.2EL变量

  • EL表达式中的变量不同于JSP表达式从当前页面中定义的变量进行查找,而是由EL引擎调用PageContext.findAttribute(String)方法从JSP四大作用域范围中查找。

  • 例如: ${username} ,表达式将按照page、request、 session.application范围的顺序依次查找名为username的属性;假如中途找到,就直接回传,不再继续找下去;假如全部的范围都没有找到, 就回传null。

  • 在使用EL表达式访问某个变量时,应该指定查找的范围,从而避免在不同作用范围中有同名属性的问题,同时也提高了查询效率。

  • EL 中的变量除了要遵循Java变量的命名规范外,还需注意不能使用EL中的保留字。

  • EL中预留的保留字:
    and or not empty div mod instance of eq ne It gt le ge true false null

4.3 EL中的 . 和 [ ] 操作符

对于常见的对象属性、集合数据的访问, EL提供了两种操作符:操作符 ” . “和” [ ] ” 操作符:

  • “.” 操作符,与在Java代码中一样, L表达式也可使用点操作符来访问对象的某个属性。
    例如,访问JavaBean对象中的属性对象中的属性:

     ${ 
         productBean.category.name} ,
    

    其中productBean为一个JavaBean对象 ,category为productBean中的一个属 性对象, name为category对象的一个属性。

  • “[ ]”操作符,用与点操作符类似,也用于访问对象的属性,属性需使用双弓|号括起来。

    ${ 
         productBean["category"]["name"] }
    
    • 当属性中包含了特殊字符,如:“.” 或“-“等并非字母或数字的符号,就一定要用“ [ ] ”操作符,例如:

      ${ 
             header["user-agent"]}
      
    • “[ ]”操作符可以访问有序集合或数组中的指定索引位置的某个元素,例如${array[0]};

    • “[ ]” 操作符可以访问Map对象的key关键字的值,例如:${map[“key”]} ;

    • 注意”[ ]”操作符和点操作符可以结合使用,例如: ${users[0].username}。

4.4 EL的错误处理机制

  • 作为表现层的JSP页面的错误处理,往往对用户会有直观的体现,为此EL提供了比较友好的处理方式:不提供警告,只提供默认值和错误,默认值是空字符串,错误是抛出一个异常。
  • EL对以下几种常见错误的处理方式:
    ■在EL中访问一个不存在的变量,则表达式输出空字符串,而不是输出”null”;
    ■在EL中访问-一个不存在对象的属性,则表达式输出空字符串,而不会抛出NullPointerException异常;
    ■在EL中访问一一个存在对象的不存在属性,则表达式会抛出PropertyNotFoundException异常。

5. EL的隐含对象

与JSP提供的内置对象目的相同,为了更加方便的进行数据访问, EL表达式也提供了-系列可以直接使用的隐含对象。
在这里插入图片描述

5.1与范围有关的隐含对象

在JSP中有四种作用域(页面域、请求域、会话域、应用域) , EL表达式针对这四种作用域提供了相应的隐含对象用于获取各作用域范围中的属性。

  • pageScope :用于获得页面作用范围中的属性值,相当于pageContext.getAttribute()

  • requestScope : 用于获得请求作用范围中的属性值,相当于request.getAttribute()

  • sessionScope : 用于获得会话作用范围中的属性值,相当于session.getAttribute()

  • applicationScope : 用于获得应用程序作用范围中的属性值,相当于application.getAttribute()

    //EL: 获取session域中存放的user的性别属性
    ${ 
         sessionScope.user.sex}
    
    // jsp脚本 : 
    <%
    User user = (User)session.getAttribute("user");
    String sex = user.getSex0;
    out.print(sex);
    %>
        
    //由上述JSP脚本代码与EL的对比可以看出, EL自动完成了类型转换和数据输出功能,并且大大简化了代码量
    
    
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
      <head>
        <title>$Title$</title>
      </head>
      <% session.setAttribute("myusername","zfc" );
         pageContext.setAttribute("sex","男" );
      %>
      <body>
      ${sessionScope.myusername}
      ${pageScope.sex}
       
      </body>
    </html>
    

5.2 与请求参数有关的隐含对象

  • 请求参数的获取也是JSP开发中常见的操作, EL表达式对此也提供了相应的隐含对象:
    param : 用于获得请求参数的单个值,相当于request.getParameter()
    paramValues : 用于获得请求参数的一组值,相当于request.getParameterValues()

    index.jsp ( web03项目名称)

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>

  <body>
   ${param.name}
  </body>
</html>

测试 : localhost:8080/web03/index.jsp?name=zhangsan

页面会打印zhangsan

5.3 其他隐含对象

  • pageContext :相当于JSP页面中的pageContext对象,用于获取ServletContext、request、response、session等 其它JSP内置对象
  • header : 用于获得HTTP请求头中的单个值,相当于request.getHeader(String name)
  • headerValues: 用于获得HTTP请求头中的一组值,相当于request.getHeaders(String name)
  • cookie: 用于获得指定的Cookie
  • initParam: 用于获得上下文初始参数,相当于aplication.getInitParameter(String name)
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
 <% 
     Cookie cookie = new Cookie("login","zhangsan" ); 
  %>
  <body>
    项目名 : ${pageContext.request.contextPath}  //   (/web03)
    cookie 名:${cookie.login.name}
    cookie 值:${cookie.value}
  </body>
</html>

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/164762.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 模糊PID算法及其MATLAB仿真(2)

    模糊PID算法及其MATLAB仿真(2)上一篇写了模糊自整定PID的理论,这篇来做MATLAB仿真。目录补充内容:如何计算临界稳定下的开环增益Ku和震荡周期TuMATLAB进行模糊PID仿真1、准备工作2、模糊控制器的设计补充内容:如何计算临界稳定下的开环增益Ku和震荡周期Tu学过控制工程或者相关理论的同学应该比较了解,判断系统稳定性的条件一般用到劳斯表(劳斯判据)。而PID控制和模糊PI…

    2022年5月4日
    49
  • 用激活码怎么永久激活idea_一键无痕视频教程

    用激活码怎么永久激活idea_一键无痕视频教程Idea激活码最新破解教程,Mac版激活至2299年,Idea激活码2021.3.3

    2022年4月20日
    264
  • freehosting申请空间和ssh -D设置

    freehosting申请空间和ssh -D设置前段时间申请了website.org的免费空间,可是有广告.在这时向大家推荐freehosting.com.Freehosting.com是一家创建于1996年的美国网站,国内在2006年有介绍过它的免费PHP空间,不过没能找到演示,目前免费空间的主机放在德国,提供1G存储空间,月流量为10G,采用CPanel控制管理面板(有简体中文版),支持FTP和Web在线文件管理(可在线解压缩),…

    2022年10月8日
    1
  • android之相机开发

    在android中应用相机功能,一般有两种:一种是直接调用系统相机,一种自己写的相机。我将分别演示两种方式的使用:第一种:是使用Intent跳转到系统相机,action为:android.media.action.STILL_IMAGE_CAMERA关键代码:Intent intent = new Intent(); //调用照相机 intent.setAction(

    2022年3月10日
    45
  • VWware15安装windows XP纯净版虚拟机「建议收藏」

    VWware15安装windows XP纯净版虚拟机「建议收藏」需要准备的工具:VMware15或其他版本winXP.iso(需要的留言)安装步骤:1.创建虚拟机选择“典型”选择“安装光盘映像文件”winXP.iso选择操作系统类型选择安装位置及虚拟机名称选择磁盘大小,最少30G选择处理器数量和内存,根据个人电脑情况而定,就是虚拟机运行速度的问题完成后启动虚拟机等待进入winPE系统选择打开“分区工具…

    2022年4月19日
    504
  • pycharm搭建python环境_pycharm如何配置编译环境

    pycharm搭建python环境_pycharm如何配置编译环境1.安装python27双击执行python-2.7.15.msi,选择装到根目录,建议d:\Python27。一路下一步,直到完成。安装完成之后,打开cmd,输入:python,如果显示以下内容则说明安装python成功如果提示命令不存在则需要设置环境变量。windows:右键我的电脑–属性–高级系统设置–高级–环境变量–系统变量找到path项,加上值,D:\Python27;D:\P…

    2022年8月25日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号