EL表达式概述

1、EL表达式概述
基本概念

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

基本语法

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

        例如:在浏览器中输出请求域中名称为message的内容。假定,我们在请求域中存入了一个名称为message的数据(request.setAttribute("message","EL");),此时在jsp中获取的方式,如下表显示:

Java代码块    JSP表达式    EL表达式
<% out.println(request.getAttribute(message")); %>    <%=request.getAttribute("message")%>    ${message}
        通过上面我们可以看出,都可以从请求域中获取数据,但是EL表达式写起来是最简单的方式。这也是以后我们在实际开发中,当使用JSP作为视图时,绝大多数都会采用的方式。

注意:有些时候我们使用EL表达式来获取后端塞在请求域的数据时,发现获取不到,这是因为jsp默认开启了 isELIgnored 这个属性,它的作用是忽略EL表达式。所以我们必须要将它给关闭了。

<%@ page contentType="text/html;charset=UTF-8" language="java" isELIgnored="false" %>
 2、EL表达式基本用法
1)获取四大域中的数据
        它只能从四大域中获取数据,调用的就是findAttribute(name,value);方法,根据名称由小到大逐个域中查找,找到就返回,找不到就什么都不显示。  

        它可以获取对象,可以是对象中关联其他对象,可以是一个List集合,也可以是一个Map集合。具体代码如下:  

创建两个实体类,User和Address  

/**
 * 用户的实体类
 */
public class User implements Serializable{
 
    private String name = "张三";
    private int age = 18;
    private Address address = new Address();
    
    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
    public Address getAddress() {
        return address;
    }
    public void setAddress(Address address) {
        this.address = address;
    }    
}
 
 
 
public class Address implements Serializable {
 
    private String province = "北京";
    private String city = "昌平区";
    public String getProvince() {
        return province;
    }
    public void setProvince(String province) {
        this.province = province;
    }
    public String getCity() {
        return city;
    }
    public void setCity(String city) {
        this.city = city;
    }
}

JSP代码

<%@ 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>
        <%--EL表达式概念:
                它是Expression Language的缩写。它是一种替换jsp表达式的语言。
            EL表达式的语法:
                ${表达式}
                表达式的特点:有明确的返回值。
                EL表达式就是把内容输出到页面上
            EL表达式的注意事项:
                1.EL表达式没有空指针异常
                2.EL表达式没有数组下标越界
                3.EL表达式没有字符串拼接
            EL表达式的数据获取:
                它只能在四大域对象中获取数据,不在四大域对象中的数据它取不到。
                它的获取方式就是findAttribute(String name)
         --%>
         <br/>-----------获取对象数据---------------------<br/>
         <% //1.把用户信息存入域中
             User user = new User();
             pageContext.setAttribute("u",user);
          %>
          ${u}===============输出的是内存地址<%--就相当于调用此行代码<%=pageContext.findAttribute("u")%> --%><br/>
          ${u.name}<%--就相当于调用此行代码<% User user = (User) pageContext.findAttribute("u");out.print(user.getName());%> --%><br/>
          ${u.age}
         <br/>-----------获取关联对象数据------------------<br/>
         ${u.address}==========输出的address对象的地址<br/>
         ${u.address.province}${u.address.city}<br/>
         ${u["address"]['province']}
         <br/>-----------获取数组数据---------------------<br/>
         <% String[] strs = new String[]{"He","llo","Expression","Language"}; 
             pageContext.setAttribute("strs", strs);
         %>
         ${strs[0]}==========取的数组中下标为0的元素<br/>
         ${strs[3]}
         ${strs[5]}===========如果超过了数组的下标,则什么都不显示<br/>
         ${strs["2"]}=========会自动为我们转换成下标<br/>
         ${strs['1']}
         <br/>-----------获取List集合数据-----------------<br/>
         <% List<String> list = new ArrayList<String>();
             list.add("AAA");
             list.add("BBB");
             list.add("CCC");
             list.add("DDD");
             pageContext.setAttribute("list", list);
          %>
         ${list}<br/>
         ${list[0] }<br/>
         ${list[3] }<br/>     
         <br/>-----------获取Map集合数据------------------<br/>
         <% Map<String,User> map = new HashMap<String,User>();
             map.put("aaa",new User());
             pageContext.setAttribute("map", map);
          %>
          ${map}<br/>
          ${map.aaa}<%--获取map的value,是通过get(Key) --%><br/>
          ${map.aaa.name}${map.aaa.age}<br/>
          ${map["aaa"].name }
    </body>
</html>

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值