EL表达式的引入可以通过表达是语言简化数据存取的代码,EL提供了很多运算符、内置对象、存取器等
一.EL运算符
1.算术运算符
+ : 加 ${1+1}
- : 减 ${1-1}
* : 乘 ${1*2}
/ : 除 ${3/2}
% : 取余 ${3%2}
2.关系运算符
==或eq 等 于 ${1==1}
!=或ne 不等于 ${1!=1}
<或lt 小 于 ${1<2}
>或gt 大 于 ${1>2}
<=或le 小于等于 ${1<=2}
>=或ge 大于等于 ${1>=2}
3.逻辑运算符
&&或and 交集 ${A&&B}
||或or 并集 ${A||B}
!或not 非 ${!A}
? : 条件运算符 ${A?B:C}
4.验证运算符
${empty param.username}
//验证username是否为空,是null,返回true
二.EL内置对象
- .和[ ]运算符
${applicationScope.user,userName}
//等价于
${applicationScope.user["userName"]}
2.和存储有关的内置对象
(1)applicationScope获取application范围属性值
(2)sessionScope获取session范围。。。
(3)requestScope获取request。。。
(4)pageScope获取page。。。
3.有关输入的内置对象
param和pareamValues获取用户请求参数:
${param.username}
${paramValues.interest[0]}
//参数只有一个值用param,多个值用paramValues
4.cookie内置对象
EL没有cookie设定的操作,设定都由后端完成,只能通过cookie对象设置cookie中的值
<%
//创建cookie
Cookie c = new Cookie("username", "root");
//设置cookie到客户端
response.addCookie(c);
%>
//取得cookie的值:
${cookie.username.value}
5.header内置对象
header存储用户浏览器和服务器用来沟通的数据,用header和headerValues来取得这些值
${header["host"]}
${header["user-agent"]} //取得浏览器版本
6.initParam内置对象
可以获取web站点中设置的环境参数值,包含初始化参数的Map
//jsp中
${iniParam.username}
//web.xml下配置:
<context-param>
<param-name>username</param-name>
<param-valie>James</param-value>
</context-param>
//程序返回James
7.pageContext内置对象
用来取得有关用户请求和页面的详细信息
${pageContext.request.queryString}
//取得请求的参数字符串
${pageContext.request.requestURL}
//取得请求URL
${pageContext.request.method}
//取得HTTP的请求方式
${pageContext.request.protocol}
//取得使用的协议
${pageContext.request.remoteAddr}
//取得用户IP地址
//当在浏览器中输入相应信息才能取得参数!!
三.EL存取器
1.读取JavaBean中的数据
//jsp1:
<%
//设置JavaBean属性在session中
session.setAttribute("person", person);
%>
//jsp2
//取得session中的javaBean属性值
${sessionScope.person.name}
2.读取Map中的数据
如果属性范围内存储的属性是一个图Map,只需指定读取的Map和kay就可得到value
//jsp1:
<%
HashMap userInfo = new HashMap();
userInfo.put("username", "James");
session.setAttribute("userInfo",userInfo);
%>
//jsp2:
${userInfo.username}
//采用${Map名.属性名}的方式读取James
3.读取数组时:
${names[0]}
//${数组名[下标]}就可以读取值