《EL表达式》

 

 什么是EL表达式?EL表达式的作用

  1. EL表达式的全称是:Expression Language 表达式语言
  2. 表达式有什么作用:EL表达式主要是替代jsp页面中的表达式脚本在jsp页面中进行数据的输出
  3. 因为EL表达式在输出数据的时候,要比jsp的表达式脚本要简洁很多
  4. EL表达式的格式:${表达式}
<%--
  Created by IntelliJ IDEA.
  User: x2773
  Date: 2021/11/18
  Time: 13:23
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
  <%
    request.setAttribute("key","value");
  %>
  表达式脚本输出key的值为:<%= request.getAttribute("key1")%><br>
  El表达式输出key的值为:${key1}
</body>
</html>

 表达式脚本输出null用户是看不懂的,会一位那就是一个输出的值,所以EL表达式有这个优势

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

  1. EL表达式主要在jsp页面中输出数据,
  2. 主要是输出域对象中的数据
  3. 当四个域都有相同的key的数据的时候,EL表达式会按照四个域的从小到大的顺序去进行搜索,找到就输出。pageContext、request、session、application
<%--
  Created by IntelliJ IDEA.
  User: x2773
  Date: 2021/11/18
  Time: 13:54
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        pageContext.setAttribute("key","pageContext");
        request.setAttribute("key","request");
        session.setAttribute("key","session");
        application.setAttribute("key","application");
    %>
    ${key}
</body>
</html>

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

<%@ page import="com.atguigu.pojo.Person" %>
<%@ page import="java.util.List" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %><%--
  Created by IntelliJ IDEA.
  User: x2773
  Date: 2021/11/18
  Time: 14:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        Person person = new Person();
        person.setName("zhangsan");
        person.setPhones(new String[]{"17641244845","18685720121","18185705960"});
        List<String> cities = new ArrayList<>();
        cities.add("沈阳");
        cities.add("大连");
        cities.add("鞍山");
        person.setCities(cities);
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("key1","value1");
        map.put("key2","value2");
        map.put("key3","value3");
        person.setMap(map);
        pageContext.setAttribute("person",person);
    %>
    输出Person:${person}<br>
    输出Person的name属性:${person.name}<br>//name找的是getName()方法
    输出Person的phones数组属性值:${person.phones[0]}<br>
    输出Person的cities集合中的元素属性值:${person.cities}<br>
    输出Person的cities集合中的某个元素属性值:${person.cities[0]}<br>
    输出Person的map集合属性值:${person.map}<br>
    输出Person的map集合中某个key值:${person.map.key1}

</body>
</html>

 EL表达式--运算

语法:${运算表达式}

 1、关系运算

 2、逻辑运算

 3、算术运算

 4、empty运算

格式:${empty 要判断的数据}

empty运算可以判断一个数据是否为空,为空输出true,不为空输出false

<%--
  Created by IntelliJ IDEA.
  User: x2773
  Date: 2021/11/18
  Time: 14:49
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        request.setAttribute("nullKey",null);
    %>
    ${empty nullKey}
</body>
</html>

5、三元运算

    ${12 == 12 ? "今天天气很好":"今天天气还不错哦哦"}

6、点运算和中括号运算

  1. 点运算,可以输出Bean对象中的某个属性的值
  2. []中括号运算,可以输出有序集合中某个元素的值
  3. 并且中括号运算可以输出map集合中key里含有特殊字符的key值
<%@ page import="java.util.HashMap" %>
<%@ page import="java.util.Map" %><%--
  Created by IntelliJ IDEA.
  User: x2773
  Date: 2021/11/18
  Time: 14:14
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        Map<String,Object> map = new HashMap<String,Object>();
        map.put("key.1","value1");
        map.put("key-2","value2");
        map.put("key+3","value3");
    %>
    输出map:${map}<br>
    输出key1:${map[key.1]}<br>
    输出key2:${map["key-2"]}<br>
    输出key3:${map['key+3']}



</body>
</html>

EL表达式中隐含的11个对象

EL表达式中隐含的11个对象,是EL自己定义的可以直接使用

 

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

解决了四个特定域中key值相同的问题

<%--
  Created by IntelliJ IDEA.
  User: x2773
  Date: 2021/11/18
  Time: 15:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
    <%
        pageContext.setAttribute("key1","value1");
        request.setAttribute("key1","value1");
        session.setAttribute("key1","value1");
        application.setAttribute("key1","value1");
    %>
    ${requestScope}
    ${pageScope.key1}
    ${requestScope.ke1}
    ${sessionScope.ke1}
    ${applicationScope.ke1}


</body>
</html>

EL表达式-pageContext演示

${pageCoontext.jsp的九大内置对象}

pageContext的使用

<%--
  Created by IntelliJ IDEA.
  User: x2773
  Date: 2021/11/18
  Time: 15:37
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>Title</title>
</head>
<body>
<%--request.getScheme() 可以获取请求的协议--%>
    <%=request.getScheme()%><br>
    1、协议:${pageContext.request.scheme}<br>
    2、服务器ip:${pageContext.request.serverName}<br>
    3、服务器端口:${pageContext.request.serverPort}<br>
    4、获取工程路径:${pageContext.request.contextPath}<br>
    5、获取请求方法:${pageContext.request.method}<br>
    6、获取客户端ip地址:${pageContext.request.remoteHost}<br>
    7、获取对话的id编号:${pageContext.session.id}
</body>
</html>

EL表达式其他隐含对象的使用

 

 

 

 

结果:

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值