zoukankan      html  css  js  c++  java
  • Java Web-EL表达式 in JSP

    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页面动态获取项目在服务器上的 虚拟目录的方法

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

        image-20191209155633227

  • 相关阅读:
    Oracle基础操作
    Linux的常用命令
    Javascript 上课笔记
    Linux操作指令
    css样式分类
    DW
    标准sql执行顺序
    Mysql数据库
    模拟课----需求文本
    php 发送邮件
  • 原文地址:https://www.cnblogs.com/jiading/p/12014251.html
Copyright © 2011-2022 走看看