目录
三、EL 表达式输出 Bean 的普通属性,数组属性,List 集 合属性,map 集合属性
一、EL表达式
(1)EL表达式全称:Expression Language,时表达式语言
(2)EL表达式作用:主要是代替jsp页面中的表达式脚本在jsp页面中进行数据的输出
因为EL表达式在输出数据时,要比jsp的表达式脚本要简洁很多。
<% request.setAttribute("key","request"); %> 表达式脚本输出key的值是:<%=request.getAttribute("key1")== null?"":request.getAttribute("key1")%><br/> EL表达式输出key的值是:${key1}
EL表达式的格式: ${表达式}
EL表达式在输出null值时,输出的是空串,jsp表达式脚本在输出null值时,输出的是null字符串
二、EL表达式搜索域数据的顺序
EL表达式主要在jsp页面中输出数据。且主要是输出域对象中的数据
当四个域中都有相同的 key 的数据时,EL 表达式会按照四个域从小到大的顺序进行搜索,找到就输出。
<% // 往四个域中都保存了相同的key的数据 pageContext.setAttribute("key1","pageContext"); request.setAttribute("key1","request"); session.setAttribute("key1","session"); application.setAttribute("key1","application"); %> ${key1}
三、EL 表达式输出 Bean 的普通属性,数组属性,List 集 合属性,map 集合属性
四、EL 表达式——运算
语法:${ 运算表达式 }
EL 表达式支持如下运算符:
4)empty 运算
empty 运算可以判断一个数据是否为空,如果为空,则输出 true,不为空输出 false。
以下几种情况为空: ① 值为 null 值的时候,为空
② 值为空串的时候,为空
③ 值是Object 类型数组,长度为零的时候
④ list 集合,元素个数为零
⑤ map 集合,元素个数为零
5)三元运算
三元运算格式:表达式1?表达式2:表达式3
实例:${ 123 == 123 ?"小镭在敲代码":"小镭没有在敲代码"}
如果表达式1的值为真,返回表达式2的值,如果表达式1的值为假,返回表达式3的值。
6)“ ·”运算和 [ ] 中括号运算符
· 运算,可以输出Bean对象中某个属性的值
[ ] 运算,可以输出有序集合中某个元素的值
且 [ ] 运算,还可以输出map集合中key里含有特殊字符的key值。
<% Map<String,Object> map1 = new HashMap<String,Object>(); map1.put("a.a.a","valuea"); map1.put("b+b+b","valueb"); request.setAttribute("map1",map1); %> ${ map1['a.a.a'] } <br/> ${ map1["b+b+b"] }<br/>
五、EL表达式的11个隐含对象
EL 个达式中 11 个隐含对象,是 EL 表达式中自己定义的,可以直接使用。
变量 | 类型 | 作用 |
pageContext | pageContextImpl | 获取jsp中的九大内置对象 |
pageScope | Map<String,Object> | 获取pageContext域中的数据 |
requestScope | Map<String,Object> | 获取Request域中的数据 |
sessionScope | Map<String,Object> | 获取Session域中的数据 |
application | Map<String,Object> | 获取ServletContext域中的数据 |
param | Map<String,String> | 获取请求参数的值 |
paramValue | Map<String,String[]> | 获取请求参数的值,可获取多个值 |
header | Map<String,String> | 获取请求头的信息 |
headerValue | Map<String,String[]> | 获取请求头的信息,可获取多个值 |
cookie | Map<String,Cookie> | 获取当前请求的Cookie信息 |
initParam | Map<String,String> | 获取在web.xml中配置的<context-param>上下文参数 |
1)EL获取四个特定域中的属性
pageScope | pageContext域 |
requestScope | Request域 |
sessionScope | Session域 |
applicationScope | ServletContext域 |
<% pageContext.setAttribute("key1","pageContext1"); pageContext.setAttribute("key2","pageContext2"); request.setAttribute("key1","request"); session.setAttribute("key1","session"); application.setAttribute("key1","application"); %> <%--可以选择性的输出(而不是按从小到大顺序)--%> ${ requestScope.key1 }<br/> ${ applicationScope.key1 }<br/> ${ pageScope.key2 }<br/>
2)pageContext对象的使用
①协议 ②服务器ip ③服务器端口 ④获取工程路径 ⑤获取请求方法 ⑥获取客户端ip地址
⑦获取会话的id编号
简单写法:
3)EL表达式其他隐含对象的示例
Ⅰ、
变量 | 类型 | 作用 |
pageContext | pageContextImpl | 获取jsp中的九大内置对象 |
pageScope | Map<String,Object> | 获取pageContext域中的数据 |
输出请求参数username的值: ${ param.username }<br/> 输出请求参数password的值: ${ param.password }<br/> 输出请求参数username的值: ${ paramValues.username[0] }<br/> 输出请求参数hobby的值: ${ paramValues.hobby[0] }<br/> 输出请求参数hobby的值: ${ paramValues.hobby[1] }<br/>
Ⅱ、
变量 | 类型 | 作用 |
header | Map<String,String> | 获取请求头的信息 |
headerValue | Map<String,String[]> | 获取请求头的信息,可获取多个值 |
输出请求头【User-Agent】的值:${ header["User-Agent"] }<br/> 输出多个请求头【User-Agent】的值:${ headerValues["User-Agent"][0] }<br/> 输出请求头【Connection】的值:${ header.Connection }<br/>
Ⅲ、
变量 | 类型 | 作用 |
cookie | Map<String,Cookie> | 获取当前请求的Cookie信息 |
获取cookie的名称:${cookie.JSESSIONID.name}<br/> 获取cookie的值:${cookie.JSESSIONID.value}<br/>
Ⅳ、
变量 | 类型 | 作用 |
initParam | Map<String,String> | 获取在web.xml中配置的<context-param>上下文参数 |
获取在web.xml中配置的<context-param>中的username: ${ initParam.username }