美文网首页
EL表达式

EL表达式

作者: 七喜丶 | 来源:发表于2021-11-02 09:38 被阅读0次

    一. EL表达式介绍

    • EL(Expression Language):表达式语言。
    • 在 JSP 2.0 规范中加入的内容,也是 Servlet 规范的一部分。
    • 作用:在 JSP 页面中获取数据。让我们的 JSP 脱离 java 代码块和 JSP 表达式。
    • 语法:${ 表达式内容 }

    二. EL获取数据(四大域对象)

        <%@ page contentType="text/html;charset=UTF-8" language="java" %>
          <html>
            <head>
              <title>EL表达式使用细节</title>
            </head>
            <body>
              <%--获取四大域对象中的数据--%>
              <%
                pageContext.setAttribute("username","zhangsan");
                request.setAttribute("username","zhangsan");
                session.setAttribute("username","zhangsan");
                application.setAttribute("username","zhangsan");
              %>
              ${username}
              ${request.username}
            
              <%--获取JSP中其他八个隐式对象  获取虚拟目录名称--%>
              <%= request.getContextPath()%>
              //重点:其中最常用的:${pageContext.request.contextPath },代表web应
                用下的根,可以看出下面action中的路径可读性更强了
              ${pageContext.request.contextPath}
          </body>
        </html>
    

    EL 表达式能够获取四大域对象的数据,若不指定域对象根据名称从小到大在域对象中查找pageContext < request < session < application
    但从指定域中获取数据,会提高查找效率

    三. EL中的内置对象

    EL表达式11个隐式对象

    隐式对象名称 说明
    pageContext 功能完全相同
    applicationScope 操作应用域对象数据
    sessionScope 操作会话域对象数据
    requestScope 操作请求域对象数据
    pageScope 操作页面域对象数据
    header 获取请求头数据
    headerValues 获取请求头数据(多个值)
    param 获取请求参数数据
    paramValues 获取请求参数数据(多个值)
    initParam 获取全局配置参数数据
    cookie 获取Cookie对象
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>EL表达式11个隐式对象</title>
    </head>
    <body>
        <%--pageContext对象 可以获取其他三个域对象和JSP中八个隐式对象--%>
        ${pageContext.request.contextPath} <br>
    
        <%--applicationScope sessionScope requestScope pageScope 操作四大域对象中的数据--%>
        <% request.setAttribute("username","zhangsan"); %>
        ${username} <br>
        ${requestScope.username} <br>
    
        <%--header headerValues  获取请求头数据--%>
        ${header["connection"]} <br>
        ${headerValues["connection"][0]} <br>
    
        <%--param paramValues 获取请求参数数据--%>
        ${param.username} <br>
        ${paramValues.hobby[0]} <br>
        ${paramValues.hobby[1]} <br>
    
        <%--initParam 获取全局配置参数--%>
        ${initParam["pname"]}  <br>
    
        <%--cookie 获取cookie信息--%>
        ${cookie}  <br> <%--获取Map集合--%>
        ${cookie.JSESSIONID}  <br> <%--获取map集合中第二个元素--%>
        ${cookie.JSESSIONID.name}  <br> <%--获取cookie对象的名称--%>
        ${cookie.JSESSIONID.value} <%--获取cookie对象的值--%>
    
    
    </body>
    </html>
    

    四. EL表达式获取不同类型数据

    <%@ page import="com.itheima.bean.Student" %>
    <%@ page import="java.util.ArrayList" %>
    <%@ page import="java.util.HashMap" %>
    <%@ page contentType="text/html;charset=UTF-8" language="java" %>
    <html>
    <head>
        <title>EL表达式获取不同类型数据</title>
    </head>
    <body>
        <%--1.获取基本数据类型--%>
        <% pageContext.setAttribute("num",10); %>
        基本数据类型:${num} <br>
    
        <%--2.获取自定义对象类型--%>
        <%
            Student stu = new Student("张三",23);
            stu = null;
            pageContext.setAttribute("stu",stu);
        %>
        <%--EL表达式中没有空指针异常--%>
        自定义对象:${stu} <br>
        <%--stu.name 实现原理 getName()--%>
        学生姓名:${stu.name} <br>
        学生年龄:${stu.age} <br>
    
        <%--3.获取数组类型--%>
        <%
            String[] arr = {"hello","world"};
            pageContext.setAttribute("arr",arr);
        %>
        数组:${arr}  <br>
        0索引元素:${arr[0]} <br>
        1索引元素:${arr[1]} <br>
        <%--EL表达式中没有索引越界异常--%>
        8索引元素:${arr[8]} <br>
        <%--EL表达式中没有字符串拼接--%>
        0索引拼接1索引的元素:${arr[0]} + ${arr[1]} <br>
    
        <%--4.获取List集合--%>
        <%
            ArrayList<String> list = new ArrayList<>();
            list.add("aaa");
            list.add("bbb");
            pageContext.setAttribute("list",list);
        %>
        List集合:${list} <br>
        0索引元素:${list[0]} <br>
    
        <%--5.获取Map集合--%>
        <%
            HashMap<String,Student> map = new HashMap<>();
            map.put("hm01",new Student("张三",23));
            map.put("hm02",new Student("李四",24));
            pageContext.setAttribute("map",map);
        %>
        Map集合:${map}  <br>
        第一个学生对象:${map.hm01}  <br>
        第一个学生对象的姓名:${map.hm01.name}
    
    </body>
    </html>
    
    

    EL 表达式注意事项

    • EL 表达式没有空指针异常。
    • EL 表达式没有索引越界异常。
    • EL 表达式没有字符串的拼接。

    五. EL 表达式运算符

    关系运算符

    运算符 作用 示例 结果
    == 或 eq 等于 ${5 == 5} 或 ${5 eq 5} true
    != 或 ne 不等于 ${5 != 5} 或 ${5 ne 5} false
    < 或 lt 小于 ${3 < 5} 或 ${3 lt 5} true
    > 或 gt 大于 ${3 > 5} 或 ${3 gt 5} false
    <= 或 le 小于等于 ${3 <= 5} 或 ${3 le 5} true
    >= 或 ge 大于等于 ${3 >= 5} 或 ${3 ge 5} false

    逻辑运算符

    运算符 作用 示例 结果
    && 或 and 并且 {A && B} 或{A and B} true / false
    || 或 or 或者 ${A || B} 或 ${A or B} true / false
    ! 或 not 取反 ${ !A } 或 ${ not A } true / false

    其他运算符

    运算符 作用
    empty 1.判断对象是否为null 2.判断字符串是否为空字符串 3.判断容器元素是否为0
    条件 ? 表达式1 : 表达式2 三元运算符
    <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
    <%@ page import="com.itheima.domain.User" %>
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
    <html>
        <head>
            <title>EL两个特殊的运算符</title>
        </head>
        <body>
            <%--empty运算符:
                它会判断:对象是否为null,字符串是否为空字符串,集合中元素是否是0个
            --%>
            <% String str = null;
              String str1 = "";
              List<String> slist = new ArrayList<String>();
              pageContext.setAttribute("str", str);
              pageContext.setAttribute("str1", str1);
              pageContext.setAttribute("slist", slist);
            %>
            ${empty str}============当对象为null返回true<br/>
            ${empty str1 }==========当字符串为空字符串是返回true(注意:它不会调用trim()方法)<br>
            ${empty slist}==========当集合中的元素是0个时,是true
            <hr/>
            <%--三元运算符 
                 条件?真:假
            --%>
            <% request.setAttribute("gender", "female"); %>
            <input type="radio" name="gender" value="male" ${gender eq "male"?"checked":""} >男
            <input type="radio" name="gender" value="female" ${gender eq "female"?"checked":""}>女
        </body>
    </html>
    

    相关文章

      网友评论

          本文标题:EL表达式

          本文链接:https://www.haomeiwen.com/subject/yoysaltx.html