JavaWeb学习——EL表达式

目录

一、EL表达式

二、EL表达式搜索域数据的顺序

三、EL 表达式输出 Bean 的普通属性,数组属性,List 集 合属性,map 集合属性

四、EL 表达式——运算

五、EL表达式的11个隐含对象

一、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 表达式中自己定义的,可以直接使用。

 

EL表达式的11个隐含对象
变量类型作用
pageContextpageContextImpl获取jsp中的九大内置对象
pageScopeMap<String,Object>获取pageContext域中的数据
requestScopeMap<String,Object>获取Request域中的数据
sessionScopeMap<String,Object>获取Session域中的数据
applicationMap<String,Object>获取ServletContext域中的数据
paramMap<String,String>获取请求参数的值
paramValueMap<String,String[]>获取请求参数的值,可获取多个值
headerMap<String,String>获取请求头的信息
headerValueMap<String,String[]>获取请求头的信息,可获取多个值
cookieMap<String,Cookie>获取当前请求的Cookie信息
initParamMap<String,String>获取在web.xml中配置的<context-param>上下文参数

 1)EL获取四个特定域中的属性

pageScopepageContext域
requestScopeRequest域
sessionScopeSession域
applicationScopeServletContext域

 <%
    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表达式其他隐含对象的示例

Ⅰ、

变量类型作用
pageContextpageContextImpl获取jsp中的九大内置对象
pageScopeMap<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/>

 Ⅱ、

变量类型作用
headerMap<String,String>获取请求头的信息
headerValueMap<String,String[]>获取请求头的信息,可获取多个值
输出请求头【User-Agent】的值:${ header["User-Agent"] }<br/>
输出多个请求头【User-Agent】的值:${ headerValues["User-Agent"][0] }<br/>
输出请求头【Connection】的值:${ header.Connection }<br/>

Ⅲ、

变量类型作用
cookieMap<String,Cookie>获取当前请求的Cookie信息
获取cookie的名称:${cookie.JSESSIONID.name}<br/>
获取cookie的值:${cookie.JSESSIONID.value}<br/>

Ⅳ、

变量类型作用
initParamMap<String,String>获取在web.xml中配置的<context-param>上下文参数
获取在web.xml中配置的&lt;context-param&gt;中的username: ${ initParam.username }

版权声明:本文为weixin_45890771原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。