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.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 hobbies;



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

}

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


jsp

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









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

Is name empty? ${empty person.name}

       <%-- 输出:false --%>

Is age empty? ${empty person.age}

         <%-- 输出:false --%>

Is hobbies empty? ${empty person.hobbies}

 <%-- 输出:true,因为 hobbies 属性尚未设置 --%>
中括号运算

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

1. 数组:

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

   语法:${array[index]}

   示例:

 jsp

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

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

   

First fruit: ${fruits[0]}

  <%-- 输出:First fruit: Apple --%>    

Last fruit: ${fruits[2]}

   <%-- 输出:Last fruit: Orange --%>

2. List:

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

   语法:${list[index]}

   示例:

jsp

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

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

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

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

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

   

First color: ${colors[0]}

 <%-- 输出:First color: Red --%>    

Last color: ${colors[2]}

  <%-- 输出:Last color: Blue --%>    

3. Map:

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

   语法:${map[key]}

   示例:

  jsp

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

   <% Map scores = new HashMap(); %>

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

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

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

   

Alice's score: ${scores["Alice"]}

  <%-- 输出:Alice's score: 85 --%>    

Bob's score: ${scores["Bob"]}

      <%-- 输出: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 初始化参数的值,可以通过初始化参数的名称来获取初始化参数的值。

你可能感兴趣的:(前端,java,jsp,开发语言)