EL的简介和使用

1 EL

1.1 EL的简介

EL(Expression Language)即表达式语言

EL主要用于代替JSP页面中的表达式脚本,在JSP页面中进行数据的输出,EL在输出数据时,要比JSP表达式脚本更简洁

    <%
        request.setAttribute("key1", "value1");
    %>

    <%-- 表达式脚本输出   --%>
    <%= request.getAttribute("key1") %>

    <%-- EL表达式输出 --%>
    ${key1}

    <%-- 使用EL表达式输出不存在的值时,输出的是空串,而不是null
        这样的处理更加简洁,避免用户误认为null是结果 --%>
    ${key}

1.2 EL的使用

1.2.1 EL的输出

EL主要用于输出域对象中的数据,能操作的4个域对象:

1,pageContext
	只在当前JSP页面有效

2,request
	只在本次请求内有效

3,session
	只在本次会话内有效

4,application
	在本次Web工程关闭前有效

EL不仅能输出简单的字符串,整型,布尔值,还能输出域对象中存储的复杂类型(对象,数组,列表,Map)

1,输出域中的对象
	${}
	
2,输出对象的成员
	${.成员}

3,输出数组/列表中指定位置的元素
	${[index]}

4,输出Map中指定键的元素
	${.get("key")}

使用示例:

<html>
<head>
    <title>Title</title>
</head>
<body>

    <%
        Person person = new Person("xx", true, null, null);
        request.setAttribute("p", person);

        String[] myArr = new String[]{"1", "2", "3"};
        request.setAttribute("arr", myArr);

        List<String> myList = new ArrayList<>();
        myList.add("a");
        myList.add("b");
        myList.add("c");
        request.setAttribute("list", myList);

        Map<String, String> myMap = new HashMap<>();
        myMap.put("key1", "value1");
        myMap.put("key2", "value2");
        myMap.put("key3", "value3");
        request.setAttribute("map", myMap);
    %>


    p对象: ${requestScope.p} <br>

    p对象的name成员: ${requestScope.p.name} <br>

    arr数组: ${requestScope.arr} <br>
    arr数组下标为2的元素: ${requestScope.arr[2]} <br>

    list列表: ${requestScope.list} <br>
    list列表中下标为1的元素: ${requestScope.list[1]} <br>

    map: ${requestScope.map} <br>
    map中键为key1的值: ${requestScope.map.get("key1")}

</body>
</html>

输出:
在这里插入图片描述

1.2.2 EL的运算符

在EL中还能通过运算符进行逻辑或算数运算

简单运算:

1,关系运算 
== != < > <= >=

2,逻辑运算
&& || !

3,算数运算
+ - * / %

empty运算:
empty运算可以判断一个数据是否为空,如果为空输出true,否则false

以下几种情况使用empty返回true:

值为null 值为空串 空数组 空列表 空Map

使用示例:

<html>
<head>
    <title>Title</title>
</head>
<body>

    <%-- EL的运算符 关系运算--%>
    ${"xxx" == "xxx"}
    ${5 >= 4} <br>

    <%-- 逻辑运算 --%>
    ${12 >= 11 && 11 >= 13}
    ${77 > 88 || 66 > 55}
    ${!(10>8)} <br>

    <%-- 算数运算 --%>
    ${12 + 12}
    ${12 % 5}
    ${9 * 9} <br>

    <%--  三目运算  --%>
    ${12 > 15 ? "xx" : "yy"} <br>

    <%-- empty运算 --%>
    <%
        List<String> myList = new ArrayList<>();
        myList.add("xxx");
        request.setAttribute("list", myList);

        Map<String, String> myMap = new HashMap<>();
        request.setAttribute("map", myMap);
    %>

    ${empty ""}
    ${empty null}
    ${empty list}
    ${empty map} <br>

</body>
</html>

输出:
在这里插入图片描述
注:EL输出null时输出的是空串,而JSP表达式脚本输出null时输出的是null字符串

1.2.3 EL中的隐含对象

EL中还存在一些可以直接使用的对象:

		对象                类型                    作用
        pageContext         pageContextImpl类型     获取JSP中的九大内置对象

        pageScope           Map<String, Object>     获取pageContext域中的数据

        requestScope        Map<String, Object>     获取request域中的数据

        sessionScope        Map<String, Object>     获取session域中的数据

        applicationScope    Map<String, Object>     获取application域中的数据

        param               Map<String, Object>     获取request中某个参数的对应值

        paramValues         Map<String, String[]>   获取request中同名参数的对应值数组

        header              Map<String, String>     获取请求头的信息

        headerValues        Map<String, String[]>   获取请求头中同名参数的对应值数组

        cookie              Map<String, Cookie>     获取当前请求的cookie信息

        initParame          Map<String, String>     获取在web.xml中配置的<contextParam>上下文参数

使用示例:

<html>
<head>
    <title>Title</title>
</head>
<body>

    <%-- EL中的隐含对象 --%>
    <%
        pageContext.setAttribute("a", "aaa");
        request.setAttribute("b", "bbb");
        session.setAttribute("c", "ccc");
        application.setAttribute("d", "ddd");
    %>

    ${pageScope.get("a")}
    ${requestScope.get("b")}
    ${sessionScope.get("c")}
    ${applicationScope.get("d")} <br>
    

    <%--  pageContext对象获取信息  --%>
    <%
        pageContext.setAttribute("req", request);
    %>
    协议: ${req.scheme} <br>
    服务器名称: ${req.serverName} <br>
    服务器端口号: ${req.serverPort} <br>
    当前工作路径: ${req.contextPath} <br>
    本次请求的方式: ${req.method} <br>
    获取客户端的IP地址: ${req.remoteHost} <br>
    获取本次会话的ID编号: ${pageContext.session.id} <br>



    <%-- EL中其它隐含对象 --%>
    请求头中的User-Agent信息: ${header['User-Agent']} <br>
    获取Cookie的名称: ${cookie.JSESSIONID.name} <br>
    获取Cookie的值: ${cookie.JSESSIONID.value} <br>

    获取Context-param: ${initParam.get("userName")} <br>

</body>
</html>

输出:
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值