EL 表达式

目录

1、简介

2、语法

2.1 零碎知识

2.2 expr-a[expr-b]形式表达式取值规则

3、相关运算符

3.1、运算符

3.2、示例

4、隐式对象

4.1 隐式对象

4.2 写法示例

1、简介

    EL(Expression Language)表达式是JSP内置的语言,用于访问应用程序数据,它简化了JSP的写法,在JSP页面可以不再使用JSP脚本、声明和表达式了。它的主要作用如下:

  • 获取后台相关对象数据。
  • 执行运算操作。
  • 获取Web隐式对象数据。

2、语法

2.1 零碎知识

  •     EL语法:${表达式}
  •     如果指只显示'${',则需要在$前加转义符,即:\${}  显示结果为:${}
  •     EL可通过.或[]获取相关集合或对象内的属性值,如果属性名含有特殊字符,则使用[]方式获取值
  •     由于不同版本的tomcat对是否默认开启EL表达式的支持可能不同,所有建议在JSP头部加入isELIgnored="false"

2.2 expr-a[expr-b]形式表达式取值规则

  1. 计算expr-a值,如果值为null,则返回null,否则进行下一步;
  2. 计算expr-b值,如果值为null,则返回null,否则进行下一步;
  3. 如果expr-a为list集合,则如果expr-b值不是int类型,则抛出异常;如果expr-a[expr-b]抛出越界异常,则返回null;否则返回expr-a[expr-b]值。
  4. 如果expr-a为map集合,则如果expr-b为map中的key,返回数据,否则返回null。
  5. 如果expr-a是一个javabean,则强制expr-b为String类型,并获取expr-b的getter方法,如果找不到,抛出异常。

3、相关运算符

3.1、运算符

  • 算术运算符:加(+);减(-);乘(*);除(/);取余(%);取模(mod);加减运算符优先级低于其余四个运算符;    
  • 逻辑运算符:与(&&/and);或(||/or);非(!/not);
  • 关系运算符:等于(==/eq);不等于(!=/ne);大于(>/gt);大于等于(>=/ge);小于(</lt);小于等于(<=/le);结果返回boolean类型值;
  • 三元条件运算符:${element ? A : B};
  • 判空(empty)运算符:${empty element}/${not empty element}

3.2、示例

算数运算符:<br/>
加:1 + 2=${1 + 2}<br/>
减:2 - 1=${2 - 1}<br/>
乘:2 * 2=${2 * 2}<br/>
除:10 / 4=${10 / 4}<br/>
取余:10 % 3=${10 % 3}<br/>
取模:10 mod 6=${10 mod 6}<br/><br/>
逻辑运算符:<br/>
与:true && false=${true && false} / ${true and false}<br/>
或:true || false=${true || false} / ${true or false}<br/>
非:!true=${!true} / ${not true}<br/><br/>
关系运算符:<br/>
等于:1 == 2 = ${1 == 2} / ${1 eq 2 }<br/>
不等于:1 != 2 = ${1 != 2} / ${1 ne 2}<br/>
大于:1 > 2 = ${1 > 2} / ${1 gt 2}<br/>
大于等于:1 >= 2 = ${1 >= 2} / ${1 ge 2}<br/>
小于:1 < 2 = ${1 < 2} / ${1 lt 2}<br/>
小于等于:1 <= 2 = ${1 <= 2} / ${1 le 2}<br/><br/>
三元运算符和判空运算符:<br/>
1 == 1 ? true : false  = ${1 == 1 ? true : false}<br/>
<c:set var="str" value="hello world"/>
empty:empty str = ${empty str}<br/>
not empty:not empty str = ${not empty str}<br/><br/>

运行结果:

4、隐式对象

4.1 隐式对象

隐式对象

类型

描述

pageContext

javax.servlet.ServletContext

JSP页面的上下文对象。可以访问其他JSP隐式对象

param

java.util.Map

包含所有请求参数,可通过${param.name}获取数据,相当于request.getParameter(name)

paramValues

java.util.Map

和param类似,但检索的是一个字符串数组,表达式${paramvalues.name}相当于request.getParameterValues(name)

header

java.util.Map

包含请求标题,表达式${header.name}相当于request.getHeader(name)

headerValues

java.util.Map

包含请求标题,和header类似,但取得是数组,表达式${headerValues.name}相当于request.getHeaders(name)

cookie

java.util.Map

包含Cookie对象,表达式$(cookie.name.value}返回cookie中key为name的value

initParam

java.util.Map

包含环境初始化参数,表达式${initParam.name} 相当于servletContext.getInitParameter(name)

pageScope

java.util.Map

包含Page范围内的所有属性。${pageScope.pageName}相当于pageContext.getAttribute("pageName")

requestScope

java.util.Map

包含Request范围内的所有属性。${requestScope.requestName}相当于request.getAttribute("requestName")

sessionScope

java.util.Map

包含Session范围内的所有属性。${sessionScope.sessionName}相当于session.getAttribute("sessionName")

applicationScope

java.util.Map

包含Application范围内的所有属性。${applicationScope.applicationName}相当于application.getAttribute("applicationName")

4.2 写法示例

${pageContext.request.characterEncoding}
${pageContext.session.creationTime}
${pageContext.servletContext.serverInfo}
${param.name}
${paramvalues.name}
${header.name}
${headerValues.name}
$(cookie.name.value}
${initParam.name}
${pageScope.pageName}
${requestScope.requestName}
${sessionScope.sessionName}
${applicationScope.applicationName}

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值