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

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>

1

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的集合 ->空

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值