Java Web-EL表达式 in JSP

概念

EL(Expression Language)是一种表达式语言,可以替换和简化JSP页面上JAVA代码的书写

语法

${<在这里写表达式>}

一般只用来写表达式,不写太过于复杂的东西,业务相关的由JavaBean负责

表达式的结果会作为HTML的资源进行直接展示

作用

  1. 运算

    支持的运算符:

    1. 算术运算符:+-*/(也可以用div表示)%(也可以用mod表示)

    2. 比较运算符> < >= <= == !=

    3. 逻辑运算符;&& || !

    4. 空运算符:empty:用于判断字符串、集合、数组对象是否为null或者长度是否为0

      例如:${empty list},如果要返回true,list就必须为Null或者长度为0

      可以取反:${! empty list}或者${not empty list}

      对于字符串、List、map等等类型都适用

  2. 获取值

    注意,EL表达式只能从域对象获取值

    语法:语法有两种

    1. ${域名称.键名}:从指定域中获取指定键的值,如果不存在的话就返回空串

      域名称:

      1. pageScope:从pageContext域中获取值
      2. requestScope:从request域中获取值
      3. sessionScope:从session中获取值
      4. applicationScope:从application(ServletContext)中获取值
    2. ${键名}:省略了域名称

      这种写法表示依次从最小的域中去查找是否有该键对应的值,直到找到为止

    问题:对于非字符串类型的值该如何获取?

    1. 对于自定义类的对象类型的值:如果直接获取对象,打印出来的是对象的地址值。如果想要里面的成员变量,就想要通过对象的属性来获取(注意是属性而不是成员变量,当然一般这两个是一样的)。

      例如,一个people类有一个成员变量为String name,然后定义了setter和getter,属性名也是name,那么要访问该属性就可以使用${people.name}

      再例如,如果我们在类中定义了一个Date类型的成员变量,其对应着有一个方法为getYear(),那么year就是该对象的一个属性,尽管我们没有在类中定义year这个成员变量。此时我们可以通过${people.year}来获取该属性值

      因为它本质上调用的是getter,而不是成员变量

      同样的,如果我们自定义一个属性并设置getter和setter,我们就可以通过设置getter来自定义输出内容了

    2. 对于List类型的值:

      • 获取列表:%{域名称.键名},这样得到的是[]包含着的所有元素

      • 获取特定元素:%{域名称.键名[索引]}
      • 如果角标越界了,就返回空串,而不是报错

    3. 对于从Map集合类型的对象中获取值:

      • ${域名称.键名.key名称}
      • ${域名称.键名["key名称"]}

      注意第一种方法的key名是不加双引号的,第二种是加的

注意

  1. JSP默认支持EL表达式

    如果我们想要忽略EL表达式、直接展示源文本,可以在JSP中设置isELIgnored属性为"true",使得整个页面的EL表达式失效为普通文本。

    如果想要屏蔽单个EL表达式,可以直接将EL表达式的符号进行转义:在EL表达式之前加\表示转义

  2. 隐式对象

    在EL中不需要创建就能直接拿来用的对象就叫隐式对象

    最常用的是pageContext对象,它的功能有:

    1. 获取JSP其他八个内置对象

      ${pageContext.XXX}(因为pageContext有getXXX方法,所以XXX是它的属性)

      例如:${pageContext.request.contextPath}来获取虚拟目录,这是一种在JSP页面动态获取项目在服务器上的 虚拟目录的方法

      我们建议在涉及到目录的地方都使用动态获取虚拟目录的方式,以便于项目在不同位置的部署使用,例如:

Java Web-EL表达式 in JSP的更多相关文章

  1. java Web EL表达式详解

    1.EL表达式的简介 EL表达式是一种JSP技术,能够代替JSP中原本要用Java语言进行显示的语句,使得代码更容易编写与维护.最基本的语法是${express}. 2.获取并显示数据 从四个域中通过 ...

  2. JAVA WEB EL表达式注入

    看猪猪侠以前的洞,顺便总结下: 一.EL表达式简介 EL 全名为Expression Language.EL主要作用: 1.获取数据 EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的we ...

  3. [Java.web]EL表达式

    <%@page import="cn.itcast.domain.Address"%> <%@page import="cn.itcast.domain ...

  4. 杂项-Java:EL表达式

    ylbtech-杂项-Java:EL表达式 EL(Expression Language) 是为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提 ...

  5. Java Web学习笔记之---JSP

    Java Web学习笔记之---JSP (一)JSP常用语法 (1)HTML注释 <!--所要注释的内容 --> 在客户端显示一个注释. (2)隐藏注释 <%--所要注释的内容--% ...

  6. java web中servlet、jsp、html 互相访问的路径问题

    java web中servlet.jsp.html 互相访问的路径问题 在java web种经常出现 404找不到网页的错误,究其原因,一般是访问的路径不对. java web中的路径使用按我的分法可 ...

  7. JavaWeb之 JSP:内置对象,EL表达式,JSP标签基础

    JSP的内置对象 什么是JSP的内置对象呢? 在JSP页面进行编程的时候,如果我们要使用一些对象,如:HttpSession,ServletConfig,ServletContext这些对象,如果每次 ...

  8. Java:EL表达式

    ylbtech-Java:EL表达式 EL(Expression Language) 是为了使JSP写起来更加简单.表达式语言的灵感来自于 ECMAScript 和 XPath 表达式语言,它提供了在 ...

  9. Java web课程学习之JSP

    JSP     jsp隐式对象:JSP隐式对象是JSP容器为每个页面提供的Java对象,开发者可以直接使用它们而不用显式声明.JSP隐式对象也被称为预定义变量. jsp脚本片段 l jsp脚本片段是指 ...

  10. java、el表达式中保留小数的方法

    Java中: import java.math.BigDecimal; import java.text.DecimalFormat; import java.text.NumberFormat; p ...

随机推荐

  1. 《你不知道的JavaScript(上)》笔记——词法作用域

    词法作用域是一套关于引擎如何寻找变量以及会在何处找到变量的规则. 词法作用域最重要的特征是它的定义过程发生在代码的书写阶段(假设你没有使用eval() 或 with) 欺骗词法:指修改词法作用域, 欺 ...

  2. 手把手教你实现RecyclerView的下拉刷新和上拉加载更多

    手把手教你实现RecyclerView的下拉刷新和上拉加载更多     版权声明:本文为博主原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. 本文链接:https:// ...

  3. Swift 构造过程

    构造过程是为了使用某个类.结构体或枚举类型的实例而进行的准备过程.这个过程包含了为实例中的每个属性设置初始值和为其执行必要的准备和初始化任务. Swift 构造函数使用 init() 方法. 与 Ob ...

  4. 安装mysql数据库及问题解决方法

    1.mysql官网下载安装包,官网地址:www.mysql.com [root@seiang software]# ll total 580020 -rw-r--r--. 1 root root 59 ...

  5. 001-多线程-锁-架构【同步锁、JUC锁】

    一.概述 Java中的锁,可以分为"同步锁"和"JUC包中的锁". 1.1.同步锁 即通过synchronized关键字来进行同步,实现对竞争资源的互斥访问的锁 ...

  6. Spring事务管理2----编程式事务管理

    编程式事务管理 通过使用将Spring框架提供的TransactionTemplate模板注入到业务层来进行事务管理,这样对业务层原来的代码修改过多.不利于项目的后期维护. 以下是声明式事务管理的具体 ...

  7. MapReduce编程实例

    MapReduce常见编程实例集锦. WordCount单词统计 数据去重 倒排索引 1. WordCount单词统计 (1) 输入输出 输入数据: file1.csv内容 hellod world ...

  8. 深入理解Attention机制

    要了解深度学习中的注意力模型,就不得不先谈Encoder-Decoder框架,因为目前大多数注意力模型附着在Encoder-Decoder框架下,当然,其实注意力模型可以看作一种通用的思想,本身并不依 ...

  9. Milo-OPC UA处理Subscription和Triggering

    Subscription有两种模式,一种是Reporting,另一种是Sampling. 如果定义为Sampling,则这个Subscription是一个Triggered Item,即被激发的订阅, ...

  10. 使用canal通过mysql复制协议从binlog实现热数据nosql缓存(1)

    binlog: mysql在运行过程中执行的DML(增删改)操作都会以二进制形式记录在binlog中 canal server: canal server作为从数据库(slave)向主数据库发送dum ...