EL&JSTL(1)——EL

本文深入讲解了EL表达式的使用方法,包括基本语法、运算符、条件判断及隐含对象的运用,通过实例演示如何在JSP页面中获取各种类型的数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

概述

EL的基本语法:

${表达式}

类似于JSP表达式<%=表达式%>。

可以通过page指令的isELIgnored属性来说明是否支持EL表达式。

<%@page isELIgnored="false" %>

当isELIgnored属性值为false时,表示可以使用EL表达式;当为true时,表示JSP页面不能使用EL表达式,默认为false。

基本语法

"[ ]"与“."运算符

EL使用”[ ]"和"."运算符来访问数据,主要使用EL获取对象的属性,包括获取JavaBean的属性值、数组中的元素及集合对象中的元素。

并且对于null值以空字符串显示而不是null,运算时不会发生错误和空指针异常,故在使用时不需要判断对象是否为null对象。

获取JavaBean的属性值

    <%--user表示JavaBean对象,username表示实体类对象的属性,getUsername()表示获取JavaBean对象的username属性的值--%>
    <%=user.getUsername()%>
    <%--等价于--%>
    ${user.username}或${user["username"]}

获取数组中的元素

    <%--如果controller或servlet或JSP中存在这么一段代码--%>
    <%
        String[] names={"张三","李四","王五"};
        request.setAttribute("names",names);
    %>
    <%--那么就可以使用EL访问数组中的元素--%>
    ${names[0]},${names[1]},${names[2]}

获取集合对象中的元素

    <%--如果controller或servlet或JSP中有这么一段话--%>
    <%
        ArrayList<User> users=new ArrayList<User>();
        users.add(new User("张三"));
        users.add(new User("李四"));
        request.setAttribute("users",users);
    %>
    <%--可以用下面的代码访问集合中的元素,[0]表示第一个集合对象,username表示集合中实体对象的属性username--%>
    ${users[0].username},${users[1].username}

算术运算符

EL的算术运算符
算术运算符说明示例结果
+${5+5}10
-${5-5}0
*${5*5}25
/${5/5}1
%求余${5%5}0

关系运算符

EL的关系运算符
关系运算符说明示例结果
==等于${5==5}true
!=不等于${5!=5}false
<小于${5<5}false
>大于${5>5}false
<=小于等于${5<=5}true
>=大于等于${5>=5}true

逻辑运算符

EL的逻辑运算符
逻辑运算符说明示例结果
&&逻辑与如果A为true,B为false,则A&&Bfalse
||逻辑或如果A为true,B为false,则A||Btrue
!逻辑非如果A为true,则!Afalse

empty运算符

EL的empty运算符
empty运算符说明示例结果
empty用于检测一个值是否为null如果A不存在,${empty A}true

条件运算符

EL的条件运算符
条件运算符说明示例结果
? :对条件进行判断并执行相应操作${A?B:C}如果A为true,则为B;如果A为false,则为C

EL隐含对象

与作用范围有关的隐含对象

与作用范围有关的隐含对象有pageScope、requestScope、sessionScope和applicationScope,分别可以获取JSP隐含对象pageContext、request、session、application中的数据。

如果EL中没有使用隐含对象指定作用范围,则会依次从page、request、session、application范围查找,若找到则直接返回,如果没有找到则返回空字符串。

语法:

${EL隐含对象.关键字对象.属性}
或
${EL隐含对象.关键字对象}

示例:

    <%--如果controller或servlet或JSP中有这么一段话--%>
    <%
        ArrayList<User> users=new ArrayList<User>();
        users.add(new User("张三"));
        users.add(new User("李四"));
        request.setAttribute("users",users);
    %>
    <%--那么可以下面的EL代码进行调用值--%>
    ${requestScope.users[0].username},${requestScope.users[1].username}

与请求参数相关的隐含对象

与请求参数相关的隐含对象有param和paramValues。

语法如下:

${EL隐含对象.参数名}

示例:

    <%--如果JSP页面有这么一段代码--%>
    <form action="/login" method="post">
        姓名:<input type="text" name="username"><br>
        性别:<input type="radio" name="sex" value="男">男
        <input type="radio" name="sex" value="女">女<br/>
        <input type="submit" value="提交">
    </form>
    <%--那么可以使用下面的EL代码获取其中的参数值--%>
    姓名:${param.username}
    性别:${paramValues.sex[0]},${paramValues.sex[1]}

实例

实例采用的是springmvc框架处理请求。

InputController.java

package controller;

import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.RequestMapping;

import javax.servlet.http.HttpServletRequest;

@Controller
public class InputController {
    @RequestMapping("/input")
    public String input(HttpServletRequest request, Model model) {
        String[] users = {"唐僧", "孙悟空", "猪八戒", "沙僧"};
        // 使用request传递数据
        request.setAttribute("users", users);
        // 使用Model传递数据
        request.setAttribute("users", users);
        return "input";
    }
}

input.jsp

<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>EL实例</title>
</head>
<body>
    接收Controller转发过来的request内置对象的数据:<br>
    ${requestScope.users[0]}<br>
    ${requestScope.users[1]}<br>
    ${requestScope.users[2]}<br>
    ${requestScope.users[3]}<br>
    <hr>
    接收Controller转发过来的Model对象的数据:<br>
    ${users[0]}<br>
    ${users[1]}<br>
    ${users[2]}<br>
    ${users[3]}<br>
</body>
</html>

运行程序效果如下:

输入地址:http://localhost:8080/input

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值