EL表达式(还算详细)

EL表达式

什么是EL表达式

EL 表达式是 Expression Language 的缩写,全称为 "Expression Language"。它是一种用于在Java Web应用中访问和操作数据的简化表达式语言。EL 表达式最初是为(JSP)开发的,但后来也被广泛应用于其他基于Java的Web框架。

EL语法格式

EL 表达式的语法格式使用${}包裹,其中${}内部可以是一个表达式或者变量名。EL 表达式主要用于在页面中获取和展示数据,执行算术运算,访问JavaBean属性,以及调用JavaBean方法等。

El表达式默认对JavaBean对象的getter方法进行调用

EL 表达式对 JavaBean 的普通属性底层默认进行调用,这是因为 EL 表达式通过 JavaBean 的 getter 方法获取属性的值。在 JavaBean 中,通常会为属性提供公开的 getter 和 setter 方法,用于获取和设置属性的值。EL 表达式使用这些 getter 方法来获取 JavaBean 属性的值。

EL 表达式的语法为 ${beanName.property},其中 beanName 是 JavaBean 的名称,property 是 JavaBean 的属性名称。在获取属性值时,EL 表达式会自动查找 beanName 对象中名为 getProperty 的方法(根据属性名进行转换),然后调用这个方法来获取属性的值。

示例:

假设有一个名为 User 的 JavaBean,其中包含属性 name 和对应的 getter 和 setter 方法:


public class User {

    private String name;



    // Getter方法

    public String getName() {

        return name;

    }



    // Setter方法

    public void setName(String name) {

        this.name = name;

    }

}

在 JSP 中,可以使用 EL 表达式获取 User 对象的 name 属性值:

jsp

<!-- 假设 user 是一个 User 对象放在 request 作用域中 -->

${user.name}

上述 EL 表达式 ${user.name} 实际上会调用 user 对象的 getName() 方法,获取 name 属性的值。

总结:EL 表达式对 JavaBean 的普通属性底层默认进行调用,通过调用 JavaBean 的 getter 方法来获取属性的值。这样可以方便地在 JSP 中访问 JavaBean 的属性,而无需直接访问底层的字段。

EL表达式的运算

EL 表达式(Expression Language)支持一系列运算符,包括算术运算、关系运算、逻辑运算三元运算点运算和Java中的基本一致),主要对特有的empty运算和中括号运算进行讲解。

empty运算

EL 表达式(Expression Language)中,empty 运算符用于检查一个值是否为空或为 null。它可以用于各种类型的值,包括字符串、集合、数组和对象等。empty 运算符返回一个布尔值,如果值为空或为 null,则返回 true;否则返回 false。

示例:

假设有以下的 JavaBean 对象:

public class Person {

    private String name;

    private int age;

    private List<String> hobbies;



    // Getter 和 Setter 方法省略...

}

在 JSP 页面中,我们可以使用 empty 运算符检查不同类型的值:


jsp

<%-- 定义一个 Person 对象并存储在 request 域中 --%>

<jsp:useBean id="person" class="com.example.Person" />

<jsp:setProperty property="name" value="John" />

<jsp:setProperty property="age" value="30" />



<%-- 使用 empty 运算符检查各种类型的值 --%>

<p>Is name empty? ${empty person.name}</p>        <%-- 输出:false --%>

<p>Is age empty? ${empty person.age}</p>          <%-- 输出:false --%>

<p>Is hobbies empty? ${empty person.hobbies}</p>  <%-- 输出:true,因为 hobbies 属性尚未设置 --%>
中括号运算

在 EL 表达式(Expression Language)中,中括号运算用于访问集合(数组、List、Map等)类型的数据。

1. 数组:

   对于数组,中括号运算使用索引来获取数组元素。索引从0开始,表示数组中的元素位置。

   语法:${array[index]}

   示例:

 jsp

   <%-- 定义一个数组并存储在 request 域中 --%>

   <% String[] fruits = {"Apple", "Banana", "Orange"}; %>

   <p>First fruit: ${fruits[0]}</p>   <%-- 输出:First fruit: Apple --%>

   <p>Last fruit: ${fruits[2]}</p>    <%-- 输出:Last fruit: Orange --%>

2. List:

   对于 List,中括号运算同样使用索引来获取 List 中的元素。索引从0开始,表示 List 中的项位置。

   语法:${list[index]}

   示例:

jsp

   <%-- 定义一个 List 并存储在 request 域中 --%>

   <% List<String> colors = new ArrayList<String>(); %>

   <% colors.add("Red"); %>

   <% colors.add("Green"); %>

   <% colors.add("Blue"); %>

   <p>First color: ${colors[0]}</p>  <%-- 输出:First color: Red --%>

   <p>Last color: ${colors[2]}</p>   <%-- 输出:Last color: Blue --%>

   

3. Map:

   对于 Map,中括号运算使用键(Key)来获取 Map 中的值(Value)。

   语法:${map[key]}

   示例:

  jsp

   <%-- 定义一个 Map 并存储在 request 域中 --%>

   <% Map<String, Integer> scores = new HashMap<String, Integer>(); %>

   <% scores.put("Alice", 85); %>

   <% scores.put("Bob", 92); %>

   <% scores.put("Charlie", 78); %>

   <p>Alice's score: ${scores["Alice"]}</p>   <%-- 输出:Alice's score: 85 --%>

   <p>Bob's score: ${scores["Bob"]}</p>       <%-- 输出:Bob's score: 92 --%>

   

El表达式中11个隐含对象及其作用

在 JSP(JavaServer Pages)中,EL(Expression Language)提供了11个隐含对象,它们是一些预定义的对象,无需额外声明,可以直接在 JSP 页面中使用。以下是这11个隐含对象及其作用:

1. ${pageContext}:

   pageContext 是 JSP 页面的上下文对象,它提供了对其他隐含对象的访问,如 request、session、application 等,以及用于在 JSP 中执行页面转发和包含的方法。

2. ${pageScope}:

   pageScope 是 JSP 页面的 PageContext 属性,它用于访问当前页面范围(page scope)的属性。

3. ${requestScope}:

   requestScope 是 JSP 页面的 request 属性,它用于访问 request 范围的属性。

4. ${sessionScope}:

   sessionScope 是 JSP 页面的 session 属性,它用于访问 session 范围的属性。

5. ${applicationScope}:

   applicationScope 是 JSP 页面的 application 属性,它用于访问 application 范围的属性。

6. ${param}:

   param 用于获取请求参数的值,它可以通过请求的参数名来获取参数值。

7. ${paramValues}:

   paramValues 用于获取请求参数的多个值,比如一个参数名对应多个值的情况,它返回一个 String 数组。

8. ${header}:

   header 用于获取请求头信息的值,可以通过请求头的名称来获取请求头的值。

9. ${headerValues}:

   headerValues 用于获取请求头信息的多个值,返回一个 String 数组。

10. ${cookie}:

    cookie 用于获取客户端传递的 Cookie,可以通过 Cookie 的名称来获取 Cookie 的值。

11. ${initParam}:

    initParam 用于获取 Servlet 初始化参数的值,可以通过初始化参数的名称来获取初始化参数的值。

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值