zoukankan      html  css  js  c++  java
  • JAVA 之 EL表达式

    一、什么是EL表达式


    1、Expression Language表达式语言

    2、是一种在JSP页面获取数据的简单方式(只能获取数据,不能设置数据)

    语法格式:${expression }


    二、EL中的基础操作符


    操作符描述
    . 访问一个Bean属性或者一个映射条目
    [] 访问一个数组或者链表的元素
    ( ) 组织一个子表达式以改变优先级
    +
    - 减或负
    *
    / or div
    % or mod 取模
    == or eq 测试是否相等
    != or ne 测试是否不等
    < or lt 测试是否小于
    > or gt 测试是否大于
    <= or le 测试是否小于等于
    >= or ge 测试是否大于等于
    && or and 测试逻辑与
    || or or 测试逻辑或
    ! or not 测试取反
    empty 测试是否空值

    三、EL中的内置对象


    内置对象描述
    pageScope page 作用域
    requestScope request 作用域
    sessionScope session 作用域
    applicationScope application 作用域
    param Request 对象的参数,字符串
    paramValues Request对象的参数,字符串集合
    header HTTP 信息头,字符串
    headerValues HTTP 信息头,字符串集合
    initParam 上下文初始化参数
    cookie Cookie值
    pageContext 当前页面的pageContext

    四、EL从四大域中获取数据


    1、如果没有使用EL的内置对象,则查找数据顺序是依次按照由小到大范围从四大域中查找指定名称的属性值

    page<request<session<application

    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
    <html>
    <head>
        <meta charset="utf-8">
        <title>EL表达式</title>
    </head>
    <body>
    <%
        pageContext.setAttribute("name","pageContext");
        request.setAttribute("name","request");
        session.setAttribute("name","session");
        application.setAttribute("name","application");
    %>
    name=${name}
    
    </body>
    </html>

     2、使用EL内置对象,从指定域中获取数据

    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
    <html>
    <head>
        <meta charset="utf-8">
        <title>EL表达式</title>
    </head>
    <body>
    <%
        pageContext.setAttribute("name","pageContext");
        request.setAttribute("name","request");
        session.setAttribute("name","session");
        application.setAttribute("name","application");
    %>
    pageName=${pageScope.name}<br>
    requestName=${requestScope.name}<br>
    sessionName=${sessionScope.name}<br>
    applicationName=${applicationScope.name}
    
    </body>
    </html>


     五、pageContext对象


    该pageContext与JSP内置对象pageContext是同一个对象。通过该对象,可以获取到request、response、session、servletContext、servletConfig等对象注意:这些对象在EL里不是内置对象,这些对象只能通过pageContext获取

    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
    <html>
    <head>
        <meta charset="utf-8">
        <title>EL表达式</title>
    </head>
    <body>
    
    ${pageContext.request.contextPath}<br>
    ${pageContext.request.method}<br>
    ${pageContext.request.requestURL}<br>
    </body>
    </html>


     六、param和paramValues对象


    param和paramValues对象用来访问参数值,通过使用request.getParameter方法和request.getParameterValues方法。

    param对象返回单一的字符串,而paramValues对象则返回一个字符串数组。

    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
    <html>
    <head>
        <meta charset="utf-8">
        <title>用户登录</title>
    </head>
    <body>
    <h1>用户登录</h1>
    <form action="testEL.jsp" method="post">
        用户名:<input name="username" type="text" /><br>
        密码:<input name="password" type="password" /><br>
        性别:<input name="sex" type="radio" value="男" /><input name="sex" type="radio" value="女"/>女<br>
        爱好:<input name="hobby" type="checkbox" value="运动"/>运动
        <input name="hobby" type="checkbox" value="阅读" />阅读
        <input name="hobby" type="checkbox" value="音乐" />音乐
        <input name="hobby" type="checkbox" value="其他"/>其他<br>
        <input type="submit" value="登录"> <input type="reset" value="重置"><br>
    </form>
    </body>
    </html>
    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
    
    <html>
    <head>
        <meta charset="utf-8">
        <title>EL表达式</title>
    </head>
    <body>
    <%
        request.setCharacterEncoding("utf-8");
    %>
        username=${param.username}<br>
        sex=${param.sex}<br>
        hobby= ${paramValues.hobby[0]}  ${paramValues.hobby[1]}
    </body>
    </html>

     


     七、header和headerValues对象


    header和headerValues对象用来访问信息头,通过使用 request.getHeader方法和request.getHeaders方法

    header对象返回单一值,而headerValues则返回一个字符串数组。

    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
    
    <html>
    <head>
        <meta charset="utf-8">
        <title>EL表达式</title>
    </head>
    <body>
    <%
        request.setCharacterEncoding("utf-8");
    %>
        header=${header["user-agent"]}
    </body>
    </html>


     八、initParam对象


    获取初始化参数,其底层调用的是ServletContext.getInitParameter()

    <?xml version="1.0" encoding="UTF-8"?>
    <web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee"
             xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
             xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee http://xmlns.jcp.org/xml/ns/javaee/web-app_4_0.xsd"
             version="4.0">
    <context-param>
        <param-name>name</param-name>
        <param-value>zero-vic</param-value>
    </context-param>
    </web-app>
    <%@ page contentType="text/html;charset=UTF-8" language="java" pageEncoding="UTF-8" %>
    
    <html>
    <head>
        <meta charset="utf-8">
        <title>EL表达式</title>
    </head>
    <body>
    <%
        request.setCharacterEncoding("utf-8");
    %>
        name=${initParam.name}
    </body>
    </html>


     九、empty运算符


    empty运算符用于检测一个值是否为null或者空

    empty是前缀运算符其运算结果是布尔值

    示例:${empty user?“zero”:user.name}

    规则:

    指向的对象为null或者为“”时,返回true

    指向的集合或者数组长度为0时,返回true

    指向的Map对象不存在、指定的key不存在、对应的value为空时,返回true


    十、EL总结


    EL表达式不能出现在Java代码块、表达式块等JSP动态代码部分

    EL可以对数据进行自动类型转换

    EL不会抛出空指针异常,只会不显示

    EL不会抛出数组越界异常,只会不显示

    EL可以单嵌套

    EL中访问存在对象的不存在属性时会抛出propertNotFoundExpectation异常

    EL不具有对字符串进行处理的能力(可以使用JSTL的EL或者自定义EL函数)

  • 相关阅读:
    一款由张鹏老师录制的一周HOLD住HTML+CSS视频教程分享给大家
    一款LAMP兄弟连最近录制的《HTML5视频教程》此款视频不错哟!上吧
    一款HTML5的基础视频教程分享给大家,希望大家好好学习啊。
    分享一款由杨中科老师主讲的javascript视频教程,属于.NET课程是视频教程
    今天给大家带来的视频教程是LINUX视频教程,希望大伙能在里面学到你想要的!
    周一好亲们!今天还给大家分享的是Oracle视频教程,来自于传智播客!
    零晨了,为大家分享一套很好的javascript视频教程!喜欢的拿走啊。
    最新为大家整理的一套android视频教程,有兴趣的便宜可以去看看!
    .net的基础学习,.NET视频教程
    yii2 (not set), GridView
  • 原文地址:https://www.cnblogs.com/zero-vic/p/12808505.html
Copyright © 2011-2022 走看看