• EL表达式


    概述

    EL 全名为Expression Language。EL主要作用:
    1. 获取数据
     EL表达式主要用于替换JSP页面中的脚本表达式,以从各种类型的web域 中检索java对象、获取数据。(某个web域 中的对象,访问javabean的属性、访问list集合、访问map集合、访问数组)
    2. 执行运算
     利用EL表达式可以在JSP页面中执行一些基本的关系运算、逻辑运算和算术运算,以在JSP页面中完成一些简单的逻辑运算。${user==null}
    3. 获取web开发常用对象
     EL 表达式定义了一些隐式对象,利用这些隐式对象,web开发人员可以很轻松获得对web常用对象的引用,从而获得这些对象中的数据。
    4. 调用Java方法
     EL表达式允许用户开发自定义EL函数,以在JSP页面中通过EL表达式调用Java类的方法。

    获取数据

    格式:${expression}

    EL表达式语句在执行时,会调用pageContext.findAttribute()方法,用标识符为关键字,分别从page、request、session、application四个域中查找相应的对象,找到则返回相应对象,找不到则返回“ ”,EL把null值直接以空字符串进行显示,避免了运算时发生错误而抛出异常。

    1..获取bean的属性
        <% 
            User u = new User();
            u.setAge(20);
            request.setAttribute("person",u);
         %>
        年龄:${person.age}
    
    
    
    2..获取数组或列表元素
         <% 
           List userlist = new ArrayList();
           User u = new User();
           u.setAge(20);
           userlist.add(u);
           request.setAttribute("userlist", userlist);
         %>
         年龄:${userlist[0].age}
    
    
    
    3..获取map中元素(两种方式均可)
         <% 
             Map<String,String> map = new HashMap<String,String>();
             map.put("user","nic");
             map.put("role", "admin");
             request.setAttribute("login", map);
         %>
          USER: ${login.user} <br>
          ROLE: ${login["role"]} 

    大多数情况下.运算符和[]运算符是通用的,以下情况只能用[]:
    1)包含特殊字符
    ${user[first-name]}
    2)通过变量动态取值
    ${user[param]}

    执行运算

    包括算术运算,逻辑运算和关系运算等

    (1)数学运算:+、-、*、/

    (2)关系运算:<、>、=、>= 、<= 、==

    (3)逻辑运算:(&&)与、(||)或、(!)非

    获取web开发常用对象

    EL提供了11个隐式对象,其中除了pageContext隐式对象对应pageContext外,其他隐式对象都是对应其Map类型。使用这些隐含对象可以很方便地获取web开发中的一些常见对象,并读取这些对象的数据。

    1. pageContext隐式对象 : 对应于JSP页面中的pageContext对象,其本身就是一个Javabean,只要是getXxx()方法,就可以用 ${pageContext.xxx}获取到
    2. initParam隐式对象 : 表示一个保存了所有web应用初始化参数的map对象,可以取得web.xml中设置的ServletContext初始参数,即<context-param>中设置的初始参数,例如 ${initParam.initCount}相当于 <%=servletContext.getInitParameter("initCount") %>
    3. cookie隐式对象 :可通过 ${cookie.cookiename} 获取cookie中对应的值
    4. 属性范围相关隐式对象 : pageScope , requestScope , sessionScope , applicationScope分别对应Jsp隐式对象 pageContext , request , session , application的setAttribute()方法所设置的属性对象,如果不对作用范围进行指定,则默认按照page、request、session、application的顺序进行查找。需要注意的式,EL表达式中的这个四个对象,仅仅代表作用范围,并不等同于Jsp中的四个对象
    5. 请求参数相关隐式对象 : 例如 ${param.user}相当于<%=request.getParameter("user") %> , 而 paramValues 表示一个保存了所有请求参数的Map对象,它对于某个请求参数,返回的是一个string[],所以往往通过下标指定具体的参数
    6. 标头相关隐式对象: 如果要获取用户请求的表头数据,可以通过 header 或 headerValues 隐式对象 , 例如 ${header["User-Agent"]}相当于 <%=request.getHeader("User-Agent")%> ,headerValues 则对应 getHeaders() 方法
  • 相关阅读:
    Go语言趣学指南lesson3
    简单的>this
    多媒体查询
    解析对象原型链
    笑对人生,坐看云起云落
    HTML5
    javascript函数及作用域的小结
    不得不知call()和apply()
    浅谈弹性盒子布局
    编译原理实验(算符优先文法)
  • 原文地址:https://www.cnblogs.com/best-hym/p/12264588.html
Copyright © 2020-2023  润新知