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函数)

  • 相关阅读:
    16进制字符串的转换
    UINavigationBar统一修改导航条样式
    3D touch
    WKWebView
    CAEmitterLayer 粒子效果(发射器)
    SDWebImage下载图片的使用
    PHP之string之str_shuffle()函数使用
    Redis之hiredis API (String)
    Redis之数据类型Sting字符串
    PHP之string之str_repeat()函数使用
  • 原文地址:https://www.cnblogs.com/zero-vic/p/12808505.html
Copyright © 2011-2022 走看看