浩浩学编程JavaWeb-06EL表达式

    科技2026-03-06  5

    EL表达式

    EL表达式

    EL表达式1.基本概念2. EL对四种作用域对象默认查找顺序3.指定作用域进行查找4.级联/通过EL表达式获取对象里的数据5.EL运算符

    1.基本概念

    Expression Language 表达式语⾔,替代 JSP ⻚⾯中数据访问时的复杂编码,可以⾮常便捷地取出域对象(pageContext、 request、 session、 application)中保存的数据,前提是⼀定要先setAttribute,EL 就相当于在简化 getAttribute

    代替的是:request.getAttribute(“name”) 这类方法

    ${变量名} 变量名就是 setAttribute 对应的 key 值。

    <%String name = (String) request.getAttribute("name");%> //传统方法 <%=name%> </hr> //EL表达式 ${name}

    2. EL对四种作用域对象默认查找顺序

    pageContext -> request -> session -> application

    按照上述的顺序进⾏查找,找到⽴即返回,在 application 中也⽆法找到,则返回 null

    即当多个对象同时定义同一个key时,${ } 显示哪个?

    <body> <% pageContext.setAttribute("name","haoqi"); request.setAttribute("name","saifei"); session.setAttribute("name","dapeng"); application.setAttribute("name","xuchao"); %> ${name} // page->haoqi </body>

    3.指定作用域进行查找

    pageContext: ${pageScope.name}

    request: ${requestScope.name}

    session: ${sessionScope.name}

    application: ${applicationScope.name}

    <% pageContext.setAttribute("name","haoqi"); request.setAttribute("name","saifei"); session.setAttribute("name","dapeng"); application.setAttribute("name","xuchao"); %> ${pageScope.name} ${requestScope.name} ${sessionScope.name} ${applicationScope.name}

    4.级联/通过EL表达式获取对象里的数据

    User.java

    package com.lut.session; public class User { private Integer id; private String name; private Double score; //重写toString,因为一般情况下 toString 得到的是: 类名 @ 哈希地址 //我们需要得到的是详细的信息。 @Override public String toString() { return "User+{" + "id=" + id + ",name=" + name + ",score=" + score + "}"; } //省略带参构造,和一堆 get,set 方法 }

    test01.jsp

    <%@ page import="javax.jws.soap.SOAPBinding" %> <%@ page import="com.hou.web03.User" %><%-- Created by IntelliJ IDEA. User: haoqi Date: 2020/10/7 Time: 9:37 To change this template use File | Settings | File Templates. --%> <%@ page contentType="text/html;charset=UTF-8" language="java" %> <html> <head> <title>test01</title> </head> <body> <% User user = new User(1,"haoqi",19.0); pageContext.setAttribute("user",user); %> <!-- 级联--> ${user}<br> <!-- 获取详细信息--> ${user.id=3} ${user.name} <!--另一种语法${user["name"]}--> ${user.score} </body> </html>

    5.EL运算符

    <% pageContext.setAttribute("num1",true); pageContext.setAttribute("num2",false); %> ${ num1 && num2 } <!--等价于--> ${ num1 and num2}

    每一个表达式,可以用 英文单词代替使用,但是英文单词和变量之间必须用空格分隔。

    && and || or ! not == eq != ne < lt \> gt <= le \>= ge empty 变量为 null,⻓度为0的String,size为0的集合 ->空
    Processed: 0.014, SQL: 9