美文网首页
EL表达式常见用法

EL表达式常见用法

作者: 青春代言人 | 来源:发表于2019-01-04 12:01 被阅读0次

    EL表达式的简介:

                EL表达式是一种JSP技术,能够代替JSP中原本要用Java语言进行显示的语句,(作用:)使得代码更容易编写与维护。最基本的语法是${express}。

    EL表达式获取并显示域对象中的属性值:

                语法:${域对象Scope.属性名}  或 ${属性名}

                         例:

                                获取request域对象中的属性:${requestScope.属性名} 或  ${属性名}

                                 类似于:request.getAttribute(属性名);

    EL表达式获取并显示域对象中的数组,中的元素

                   语法:${域对象Scope.数组名[索引]} 或 ${数组名[索引]} 或 ${域对象['数组名'][索引]}

                          例:

                                <%

                                        Object[] obj = new Object[]{"123",123};

                                        session.setAttribute("objs",obj);

                                %>

                                    ${sessionScope['objs'][0]} 或 ${objs[0]}

    EL表达式获取并显示域对象中的集合,中的元素

                    语法:${域对象Scope.集合名[索引]}${集合名[索引]}

                            例:

                                        <%

                                                List<Integer> nums = new ArrayList<Integer>();

                                                    nums.add(Integer.valueOf("100"));

                                                    nums.add(200);

                                                    nums.add(new Integer(300));

                                                    pageContext.setAttribute("num",nums);

                                                Map<String,Object> map = new HasMap<>();

                                                     map.put("name","哈哈");

                                                     map.put("age",123);

                                                     map.put("sex",“男”);

                                                     pageContext.setAttribute("map",map);

                                         %>    

                            List集合:

                                    ${num[0]}<br/>

                                    ${num[1]}<br/>

                                    ${num[2]}<br/>

                            Map集合:

                                    ${map['name']}

                     注:如果是Set集合则索引为每个元素的位置,如果是Map集合则索引                          为map集合中的键值;

    EL表达式获取域对象中javabean对象中的属性值:

                        <%

                                    Person p = new Person();

                                    Address address = new Address();

                                    address.setCity("浙江");//Adress类中有个私有String属性为city

                                    p.setName("mike");//Person类中有私有String属性为name

                                    p.setAddress(address);//Person类中有私有Adress属性为address

                                    session.setAttribute("person", p);//存入sessionScope

                        %>

                            ${person.name}( 从WEB域中找到键值为person的对象,然后再person对象中找到   name属性)

                            ${person.address.city}(先获取域对象中的javabean对象,然后又获取javabean对象中的address对象,再从中获取city属性)

              使用[]方式获取:

                              ${person['name']}

                               ${person['address']['city']}

    EL表达式中执行运算:

                   A)语法:${运算表达式}

                   B)常见运算符:==(eq)   !=(ne)    <(lt)    >(gt)    <=(le)    >=(ge)    &&(and)   ||(or)   !(not)

                    C)判断是否为空:${empty name }

                            注:如果获取判断的对象为空字符串或null都会返回true;

                    D)三目运算符:${name == null?"null":name }

    EL表达式获取值的原理:

                原理:EL表达式在获取某个对象的属性值时,先将某个属性值首字母变成大写,然后加上get前缀,拼接成getter方法,通过反射将该对象构建出来,然后再对该对象执行getter方法,这与私有属性并没有关系,所以要注意,JavaBean的属性名要小写,且要有getter方法,不然会报错。

     注:

       1)、 EL表达式只能读数据,不能修改数据。

       2)、EL表达式只能出现在静态部分,不能出现在java代码块中。

       3)、 EL表达式不会抛出异常,在出现异常时,EL表达式将会以空白显示。

       4)、表达式只能从四大域中读取数据。

       5)、如果四大域内中有相同属性名,那么EL表达式将会从最小范围的域依次往最大域查找

                    域对象的范围(由小到大):page→request→session→appliction;

       6)、查找到相关内容后将会停止查找,并显示查找到的第一条数据。

       7)、如果没有查找到对应的值,则会返回空字符串,而不是null;

      8)、除了用.方式获得对象的属性,也可以用[ ]方式,当然遇到键值名字中有特殊意义的字符,如         '-'(mike-abc)、'.'(aa.bb.cc)或者key值为数字开头,则只能用[ ]方式。

    相关文章

      网友评论

          本文标题:EL表达式常见用法

          本文链接:https://www.haomeiwen.com/subject/werhrqtx.html