1、EL表达式概述

​ EL表达式,全称是Expression Language。意为表达式语言。它是Servlet规范中的一部分,是JSP2.0规范加入的内容。其作用是用于在JSP页面中获取数据,从而让我们的JSP脱离java代码块和JSP表达式。

2、基本语法

EL表达式的语法格式非常简单,写为 ${表达式内容}

例如:在浏览器中输出请求域中名称为message的内容。

Java代码块JSP表达式EL表达式
<%<br/> <br/> String message = (String)request.getAttribute("message");<br/> out.write(message);<br/>%><%=request.getAttribute("message")%>${message}
<%@ page import="com.codeui.top.User" %>
<%@ page import="java.util.ArrayList" %>
<%@ page import="java.util.HashMap" %>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
  <head>
    <title>$Title$</title>
  </head>
  <body>
  <% pageContext.setAttribute("num",10);%>
  基本数据类型 num:${num}
<br>
  <% User user = new User("张三","2311231");
    pageContext.setAttribute("user",user);%>
  自定义类型 user:${user}<br>
            user.name${user.name}<br>
            user.password${user.password}<br>
  <% String[] arr = {"hello","world"};
  pageContext.setAttribute("arr",arr);
  %>
  数组 ${arr[0]} ${arr[1]}<br>

  <% ArrayList<String> list = new ArrayList<>();
  list.add("aaa");
  list.add("bbb");
  pageContext.setAttribute("list",list);
  %>
  list集合 ${list[0]}<br>

  <%
    HashMap<String, User> map = new HashMap<>();
    map.put("user1",new User("注释","12312"));
    map.put("user2",new User("喜刷刷","1123112"));
    pageContext.setAttribute("map",map);
  %>

  第一个学生对象 ${map.user1}<br>
  第一个学生对象名字 ${map.user1.name}<br>
  </body>
</html>

3、注意事项

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

4、EL表达式运算符

  • 关系运算符

    22090305

  • 逻辑运算符

    22090306

  • 其他运算符

    运算符作用
    empty1.判断对象是否为null
    2.判断字符串是否为空
    3.判断容器元素是否为0
    条件?表达式1:表达式2三元运算符

5、细节

  • EL表达式能够获取四大域对象的数据,根据名称从小到大再域对象中查找
  • 也能获取JSP其他八个隐式对象,并调用对象中的方法

6、EL11个隐式对象

EL中的隐式对象类型对应JSP隐式对象备注
PageContextJavax.serlvet.jsp.PageContextPageContext完全一样
ApplicationScopeJava.util.Map没有应用层范围
SessionScopeJava.util.Map没有会话范围
RequestScopeJava.util.Map没有请求范围
PageScopeJava.util.Map没有页面层范围
HeaderJava.util.Map没有请求消息头key,值是value(一个)
HeaderValuesJava.util.Map没有请求消息头key,值是数组(一个头多个值)
ParamJava.util.Map没有请求参数key,值是value(一个)
ParamValuesJava.util.Map没有请求参数key,值是数组(一个名称多个值)
InitParamJava.util.Map没有全局参数,key是参数名称,value是参数值
CookieJava.util.Map没有Key是cookie的名称,value是cookie对象