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

    EL表达式和JSTL

    1. 引入EL表达式以及JSTL

    由于在jsp页面应该只做展示页面的事情,就不该大量的编写java代码,但是有时候又不得不在其中编写java代码,使用EL表达式和JSTL可以替换和简化java代码的编写

    3. EL表达式(Expression Language)

    1. 语法:${表达式}

    2. 注意:jsp是默认支持EL表达式的,如果要忽略EL表达式有两种方法:

      1. 在jsp的page指令中设置 isELIgnored=true,表示忽略当前jsp页面所有的EL表达式
      2. 在要忽略的表达式的前面加反斜杠 ${表达式},表示忽略这个表达式
    3. 使用:

      1. 运算:

        • 算数运算符:+、-、*、/(div)、%(mod)
        • 比较运算符:==、>、<、>=、 <=、!=
        • 逻辑运算符:&&(and)、||(or)、!(not)
        • 空运算符:empty
          • 用于判断字符串、集合、数组是否为null、长度是否为0
          • ${empty list}
          • ${not empty list}:表示判断list是否不为null,长度不为0
      2. 获取值:

        1. EL表达式只能从域对象中获取值

        2. 语法1:${域名称.键名称}

          • 域名称有: 域从上到下,范围依次扩大
            • pageScope:从pageContext获取
            • requestScope:从request域获取
            • sessionScope:从session域获取
            • applicationScope:从application域获取
          <%--在request域中存储了name=didi--%>
              <%
                  request.setAttribute("name", "didi");
              %>
          <%--获取request域中的值--%>
              ${requestScope.name}
              ${requestScope.hah}
          

        3. 语法2:省略域名称,直接写键名称,表示从最小的域开始查找匹配的键

      3. 当获取的值不值字符串,而是一个其他的对象,比如自定义的User对象,值可以通过对象的属性获取(属性是根据setter、getter转变而来)

        User类:

        public class User {
            private String name;
            private int age;
            private Date birthday;
        }
        

        获取存储到request域的user对象的属性:

        <%
            User user = new User();
            user.setName("Andy");
            user.setAge(18);
            user.setBirthday(new Date());
        
            request.setAttribute("u", user);
        %>
        
        ${requestScope.u.name}<br>
        ${requestScope.u.age}<br>
        ${requestScope.u.birthday}<br>
        

        如果要获取一个好看的日期,自定义一个格式,那么就可以定义一个getBirthStr,使得该对象有birthStr这个属性,便可以用来获取自定义的日期格式:

        /**
         * 逻辑视图,是为了展示好看的数据的
         * @return
         */
        public String getBirthStr() {
            if(this.birthday != null) {
                SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
                return sdf.format(birthday);
            } else {
                return "";
            }
        }
        

      4. 获取List集合的值:${域名称.键名称[索引]}

        List<String> list = new ArrayList<>();
        list.add("aaa");
        list.add("bbb");
        request.setAttribute("list", list);
        
        
        ${list}<br> // [aaa, bbb]
        ${list[0]}<br> // aaa
        
      5. 获取Map集合的值:${域名称.键名称.key名称}

        Map map = new HashMap();
        map.put("jack", "男");
        map.put("rose","女");
        request.setAttribute("people", map);
        
        ${requestScope.people.jack}<br>// 男
        
    4. 隐式对象

      1. EL表达式有11个隐式对象
      2. pageContext:获取其他八个jsp内置对象
        1. 在jsp页面动态获取虚拟目录:${pageContext.request.contextPath}
  • 相关阅读:
    13.Convert BST to Greater Tree(将树转为更大树)
    13.调用数组顺序使奇数位于偶数前面
    12.数值的整数次方
    11.二进制中1的个数
    12.Hamming Distance(汉明距离)
    11.Find All Numbers Disappeared in an Array(找出数组中缺失的数)
    10.Find All Anagrams in a String(在一个字符串中发现所有的目标串排列)
    垃圾收集器与内存分配策略---垃圾收集器
    线程之间的协作
    1287. Mars Canals(DP)
  • 原文地址:https://www.cnblogs.com/zhuobo/p/10805588.html
Copyright © 2011-2022 走看看