zoukankan      html  css  js  c++  java
  • el语句基本用法

    EL(Expression Language)


    一、EL操作符

    语法:${EL表达式}
     
    • 1
    1. .”操作符
      用来访问对象的某个属性,如${user.name}。

    2. “[ ]”操作符
      也可用来访问对象的某个属性,如${user[‘name’]}。

      “[ ]”操作符其他功能:

      (1)当属性名中包含特殊字符如“.”或“-”等的情况下,就不能使用“.”操作符来访问,这时只能使用“[ ]”操作符。

      (2)根据索引值访问数组中的元素使用“[ ]”操作符,如${arr[1]}。

      (3)使用变量实现动态访问,如${user[x]},x是一个变量,改变x即可。


    1.1、算术操作符

    这里只测试了“+”操作符,“-”、“*”、“/”或div、“%”或mod请自行测试。

    <!-- “+”操作符 -->
    ${a1+a2+a3 }<br><!-- 输出:60 -->
    ${1+1 }<br><!-- 输出:2 -->
    ${'1'+1.1 }<br><!-- 输出:2.1 -->
    ${"1"+1 }<br><!-- 输出:2 -->
    ${bbbbbsdcksnvjnds+1 }<br><!-- 输出:1 -->
    ${"bbbbbsdcksnvjnds"+1 }<!-- 报异常 -->

    1.2、关系操作符

    这里写图片描述

    1.3、逻辑操作符

    这里写图片描述

    1.4、empty操作符

    <!-- empty操作符 -->
    ${empty s }<br><!-- 输出:true -->
    ${!empty s }<br><!-- 输出:false -->
    ${not empty s }<br><!-- 输出:false -->
    ${!not empty s }<br><!-- 输出:true -->

    总结:若变量 s为null,或长度为零的String,或size为零的集合,则
    ${ empty s }返回的结果为true,
    ${ not empty s }或${ ! empty s }返回的结果为false。


    二、EL内置隐式对象


    2.1、EL内置对象之域对象

    <%
        pageContext.setAttribute("a", "1");
        request.setAttribute("a", "2");
        session.setAttribute("a", "3");
        application.setAttribute("a", "4");
    %>
    
    ${pageScope.a }<!-- 输出:1 -->
    ${requestScope.a }<!-- 输出:2 -->
    ${sessionScope.a }<!-- 输出:3 -->
    ${applicationScope.a }<br><!-- 输出:4 -->
    ${a }<!-- 输出:1 -->

    【总结】:${a }底层使用pageContext.findAttribute(“a”),依次从page、request、session、application的域范围中寻找”a”属性,如果都没有则返回null 。


    2.2、EL内置对象之param、paramValues(请求参数对象)

    <!-- 这里使用get的提交方式测试,直接在URL中拼接参数。
        (请求路径:http://localhost:8080/web上下文路径/index.jsp?name=zhang&hobby=篮球&hobby=足球)
     -->
    
    ${param.name }<br><!-- 输出:zhang -->
    ${param.hobby }<br><!-- 输出:篮球 -->
    ${paramValues.name }<br><!-- 输出:[Ljava.lang.String;@7c244cff -->
    ${paramValues.name[0] }<br><!-- 输出:zhang -->
    ${paramValues.hobby }<br><!-- 输出:[Ljava.lang.String;@5ae7ad90 -->
    ${paramValues.hobby[1] }<br><!-- 输出:足球 -->

    【总结】:
    ${param.xxx } 相当于reuqest.getParameter(“xxx”);
    ${paramValues.xxx } 相当于reuqest.getParameterValues(“xxx”);
    如果是数组可以使用下标。


    2.3、EL内置对象之header、headerValues(请求头对象)

    ${header.accept }<br>
    <!-- 输出:text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,
    image/apng,*/*;q=0.8 -->
    
    ${header.accept-Encoding }<br>
    <!-- 输出:${header.accept-Encoding },需要注意(输出中不会输出"",因为我不这样写,会直接报
    异常),"-"被解析成减号,导致抛出异常,在语句最前面写上"",转义$符号,就可以将语句原样输出 -->
    
    ${header['accept-Encoding'] }<br><!-- 输出:gzip, deflate, br -->
    ${headerValues['accept-Encoding'] }<br><!-- 输出:[Ljava.lang.String;@2f08b521 -->
    ${headerValues['accept-Encoding'][0] }<br><!-- 输出:gzip, deflate, br -->

    2.4、EL内置对象之pageContext对象

    ${pageContext.request.contextPath }<br><!-- 输出:/el (这是我的web上下文路径)-->

    【总结】:pageContext对象:封装了其他8个JSP内置对象,可以任意获取使用。


    2.5、EL内置对象之cookie对象

    <!--===================================-->
    ${cookie }
    <!-- 输出:{JSESSIONID=javax.servlet.http.Cookie@5197416d,
     Webstorm-77d15532=javax.servlet.http.Cookie@3f5b951a, 
     Webstorm-6c1ac651=javax.servlet.http.Cookie@536cda57} -->

    2.6、EL内置对象之initParam(全局初始化参数对象)

    <!-- 在web.xml中配置 :
      <context-param>
        <param-name>Encoding</param-name>
        <param-value>UTF-8</param-value>
      </context-param>
      <context-param>
        <param-name>pageSize</param-name>
        <param-value>10</param-value>
      </context-param>
    -->
    ${initParam.Encoding }<br><!-- 输出:UTF-8 -->
    ${initParam }<br><!-- 输出:{pageSize=10, Encoding=UTF-8} -->

    三、EL获取数据实例

    3.1、EL获取域中属性

    <%
        String str = "hello";
        pageContext.setAttribute("str", str); 
    %>
    ${pageScope.str }<br><!-- 输出:hello -->
    ${str }<br><!-- 输出:hello -->

    3.2、EL获取数组元素

    <%
    String[] s = {"zhang","xiao","hu"}; 
    pageContext.setAttribute("s", s); 
    %>
    ${pageScope.s }<br><!-- 输出:[Ljava.lang.String;@1d78464e -->
    ${pageScope.s[2] }<br><!-- 输出:hu -->

    3.3、EL获取 List<String> 中的数据

    <%
    List<String> list = new ArrayList<String>();
    list.add("zhang");
    list.add("xiao");
    list.add("hu");
    pageContext.setAttribute("list", list); 
    %>
    ${list }<br><!-- 输出:[zhang, xiao, hu] -->
    ${list[1] }<br><!-- 输出:xiao -->

    3.4、EL获取 Map<String, Integer> 中的数据

    <%
    Map<String, Integer> map = new HashMap<String, Integer>();
    map.put("zhang",1);
    map.put("xiao",2);
    map.put("hu",3);
    pageContext.setAttribute("map", map); 
    %>
    ${map }<br><!-- 输出:{xiao=2, zhang=1, hu=3} -->
    ${map.zhang }<br><!-- 输出:1 -->

    3.5、EL获取 Map<String, JavaBean> 中的数据

      

    <%Map<String, User> umap = new HashMap<String, User>();
    umap.put("user1", new User("zhang",18));
    umap.put("user2", new User("xiao",36));
    pageContext.setAttribute("umap", umap); 
    %>
    ${umap }<br><!-- 输出:{user1=User [name=zhang, age=18], user2=User [name=xiao, age=36]} -->
    ${umap.user2 }<br><!-- 输出: User [name=xiao, age=36] -->
    ${umap.user1.age }<br><!-- 输出:18 -->
    ${umap['user2'].name }<br><!-- 输出:xiao 需注意,这种方式要求map的key必须是String类型-->
    ${umap['user2']['name'] }<br><!-- 输出:xiao -->
    ${umap['user2']['age'] }<br><!-- 输出:36 -->
    ${umap['user2'][age] }<br><!-- 不会报错,但什么也获取不到 -->

    转自:https://blog.csdn.net/hu1010037197/article/details/80214637
  • 相关阅读:
    CentOS安装部署Nodejs
    CentOS安装部署Git
    CentOS安装部署Mysql 5.7
    CentOS 7 安装Java环境(脚本一键式安装)
    Java技术 | 细谈Java中UUID的简单了解与使用
    Navicat Premium 版本 12.1 激活成永久
    Java技术 | 细谈 Java 8 中的 Base64
    安装部署Elastic Search
    从零开始搭建linux下laravel 5.5所需环境(二)
    从零开始搭建linux下laravel 5.5所需环境(一)
  • 原文地址:https://www.cnblogs.com/yangqqq/p/13807548.html
Copyright © 2011-2022 走看看