美文网首页
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>

相关文章

  • JSTL与EL表达式笔记

    EL表达式应用 初始EL表达式 EL表达式 EL(Expression Language)表达式语言用于简化JSP...

  • EL表达式

    EL表达式语法 ${ EL expression}其中:$ 表示EL表达式的开始。EL expression指定...

  • EL表达式详解

    一、EL表达式简介 EL 全名为Expression Language。EL主要作用: 获取数据:EL表达式主要用...

  • 4.El表达式

    1.EL表达式 1.EL表达式的作用 2. EL语法

  • 【JavaWeb】EL表达式

    EL表达式 EL表达式语言,用于简化JSP的输出;EL表达式的基本语法:${表达式};示例: 学生姓名:${stu...

  • 17.3EL表达式

    一、EL表达式简介 EL 全名为Expression Language。EL主要作用:1、获取数据EL表达式主要用...

  • day07

    EL表达式&JSTL EL表达式的学习路线:1 EL表达式的由来2 使用EL获取web四个容器(page、re...

  • JSTL和EL表达式

    EL表达式 表达式语言(Expression Language),或称EL表达式,简称EL,是Java中的一种特殊...

  • 20160928------EL表达式

    一、EL表达式:Expression Language EL表达式提供了获取对象以及属性的简单方法 二、EL表达式...

  • 5、jstl与el表达式

    1、什么是el表达式 el表达式会自动类型转换 对类型没有强制要求 使用简单 2、el表达式作用范围 EL最主要的...

网友评论

      本文标题:EL表达式

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