EL表达式

EL(Expresssion Language)表达式语言,简称为EL表达式,它是JSP2.0中引入的一种计算和输出Java对象的简单语言。主要特点:

  • 在EL表达式中可以获取命名空间(pageContext对象),通过该对象可以访问JSP页面的其他内置对象
  • 可以获取JavaBean的属性、数组以及集合对象的数据
  • 可以执行关系、逻辑、算术等运算
  • 获取page、request、session、application作用域的属性
  • 自定义EL函数,调用Java类的方法

一.语法

(1).语法格式如下:
${ expression }
(2).输出$字符串
// 加上“\”符号
\$
// 输出“${}”字符串
${ "${}" }
// 输出EL表达式“${1 + 1 }”,不是结果2
\${ 1 + 1 }

二.运算符

JSP中,EL表达式提供了存取运算符、算术运算符、关系运算符、逻辑运算符、条件运算符以及Empty运算符
(1).存取运算符
存取运算符包括“.”和“[]”,用于获取对象的属性
${user.name} - ${user["name"]}
${userList.get(0).name}
(2).算术运算符
+ - * / %,用在整数和浮点数上 
${"a"}${"b"} // ${"a" + "b"} 是错误的,只能用于整数、浮点数的运算
(3).关系运算符
等于(==或eq) 不等于(!=或ne) 小于(<或lt) 大于(>或gt)  大于等于(>=或ge) 小于等于(<=或le)
${1 > 2 } - ${1 lt 2 } // false - true
(4).逻辑运算符
与(&&或and)、或(||或or)、非(!或not)
${not (1 > 2) } - ${! (1 < 2)} // true - false
(5).empty运算符
前缀运算符,判断是否为null
${empty name }-${name == null} // true - true
(6).条件运算符
问号表达式
${num1 < num2 ? num1 : num2 }

三.隐含对象

EL表达式中定义了一些隐含对象,共有11个,分为以下3种:
pageContext隐含对象、访问环境信息的隐含对象、访问作用域范围的隐含对象
(1).pageContext隐含对象
该对象用于访问JSP的9大内置对象,如request、response、session、page等
// 获取应用上下文路径
${pageContext.request.contextPath} // '/项目名'
(2).访问环境信息的隐含对象
EL表达式中定义的用于访问环境信息的隐含对象包括以下6个:
  • cookie:请求中的Cookie
  • header:请求头,若属性中有“-”,如User-Agent,需要使用${header["User-Agent"]}获取值
  • headerValues:请求头属性的Map对象,值保存在数组中
  • initParam:获取上下文的初始化参数,如web.xml中<context-param>标签
  • param:获取请求参数
  • paramValues:请求参数的Map对象,值保存在数组中
// cookie
${cookie.JSESSIONID.name} - ${cookie.JSESSIONID.value}

// header
${header.Accept } 
${header["User-Agent"] } // 使用${header.User-Agent}会报错,也就是执行了减法

// headerValues
${headerValues.Accept[0] }
${header["User-Agent"][0] }

// url为:xxx/testEl?name=aa
// param
${param.name } // aa 

// paramValues
${paramValues.name[0] } // aa,返回的是String[]

// initParam
${initParam.appName}// test_servlet

web.xml配置为:
<context-param>
    <param-name>appName</param-name>
    <param-value>test_servlet</param-value>
</context-param>
(3).访问作用域范围的隐含对象
  • pageScope:(默认),获取page域内的属性
  • requestScope:获取request域中的属性
  • sessionScope:获取session域中的属性
  • applicationScope:获取application域中的属性

获取指定域中的属性值,若不指定哪一个范围内取值,默认从page域中查找,不存在则依次从request->session->application查找,只要查找到该属性则停止查找

// request、session中都存在name属性
${name} // 获取的是request范围的name属性
${requestScope.name}// 指定获取request域中的name属性


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值