精华内容
下载资源
问答
  • EL表达式是一种JSP技术,能够代替JSP中原本要用Java语言进行显示语句,使得代码更容易编写与维护。最基本语法是${express}。 获取并显示数据 从四个域中通过key找到简单数据并显示出来。表达式代码:${name}...

    什么是EL表达式?

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

    获取并显示数据

    从四个域中通过key找到简单数据并显示出来。表达式代码:${name}      <!-- 类比于<%=pageContext.findAttribute("name") %> -->

    • 四个域的寻找顺序是 page,request,session,application。用EL表达式还有个好处,若找不到键值为name的属性值,不会显示null,会显示空字符串。若是确定键值是在request域中,则可以用如下EL表达式代码:${requestScope.name}
    •  从存储在WEB域中的封装了数据的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}
      
      ${person['name']}<!-- 也可以用[]方式 -->
      ${person['address']['city']}
      

      除了用 .方式获得对象的属性,也可以用 [ ]方式,当然遇到键值名字中有 -的,如mike-abc,或者key值为数字开头,则只能用 [ ]方式。

    • 从Map中获取某个值并显示。

      <%
      	Map map = new HashMap();
      	map.put("a", new Person("aaa"));
      	map.put("b", new Person("bbb"));
      	map.put("1", new Person("ccc"));
      	request.setAttribute("map", map);
      %>
      ${map['1'].name }<!-- 是数字的话只能用括号,就算put进去的key值是字符串类型-->
      ${map.a.name }
      

       

    执行算法

    1. 语法:${运算表达式}
    2. 常见运算符:==(eq)   !=(ne)    <(lt)    >(gt)    <=(le)    >=(ge)    &&(and)   ||(or)   !(not)
    3. 判断是否为空:${empty name }
    4. 三目运算符:${name == null?"null":name } 

    获取常用对象

    1. 语法:${隐式对象名称}
    2. 隐式对象表
    对象名 用法 等价JSP代码或作用
    param ${param.name} request.getParameter(name)
    paramValues ${paramValues.name} request.getParameterValues(name)//返回一个字符串数组
    header ${header.name} request.getHeader(name)
    headerValues ${headerValues.name} request.getHeaderValues(name)
    cookie ${cookie.name.value} request.getCookie()
    initParam ${initParam.name} ServletContext.getInitparameter(name)
    pageContext ${pageContext.request.contextPath} 获取WEB应用名
    pageContext ${pageContext.request.sessionid} 获取sessionId
    pageContext ${pageContext.request.remoteAddr} 获取主机名

    EL表达式原理及注意点

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

    展开全文
  • EL表达式常见用法详解

    万次阅读 多人点赞 2017-02-02 17:33:21
    1.EL表达式的简介 EL表达式是一种JSP技术,能够代替JSP中原本要用Java语言进行显示的语句,使得代码更容易编写与维护。最基本的语法是${express}。 2.获取并显示数据 1)从四个域中通过key找到简单数据并显示出来...

    1.EL表达式的简介

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

    2.获取并显示数据

    1)从四个域中通过key找到简单数据并显示出来。表达式代码:

    ${name}      <!-- 类比于<%=pageContext.findAttribute("name") %> -->
    四个域的寻找顺序是 page,request,session,application。用EL表达式还有个好处,若找不到键值为name的属性值,不会显示null,会显示空字符串。若是确定键值是在request域中,则可以用如下EL表达式代码:
    ${requestScope.name}
    2)从存储在WEB域中的封装了数据的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}
    ${person['name']}<!-- 也可以用[]方式 -->
    ${person['address']['city']}
    除了用.方式获得对象的属性,也可以用[ ]方式,当然遇到键值名字中有-的,如mike-abc,或者key值为数字开头,则只能用[ ]方式。

    3)从List集合对象中获取某个值并显示。

    <%
    	List<Person> list = new ArrayList<Person>();
    	list.add(new Person("kkk"));
    	list.add(new Person("sss"));
    	list.add(new Person("jjj"));
    	application.setAttribute("list_1", list);
    %>
    ${list_1[1].name }

    4)从Map中获取某个值并显示。

    <%
    	Map map = new HashMap();
    	map.put("a", new Person("aaa"));
    	map.put("b", new Person("bbb"));
    	map.put("1", new Person("ccc"));
    	request.setAttribute("map", map);
    %>
    ${map['1'].name }<!-- 是数字的话只能用括号,就算put进去的key值是字符串类型-->
    ${map.a.name }

    3.执行运算

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

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

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

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


    4.获取常用对象

    1)语法:${隐式对象名称}

    2)隐式对象表

    对象名 用法 等价JSP代码或作用
    param ${param.name} request.getParameter(name)
    paramValues ${paramValues.name} request.getParameterValues(name)//返回一个字符串数组
    header ${header.name} request.getHeader(name)
    headerValues ${headerValues.name} request.getHeaderValues(name)
    cookie ${cookie.name.value} request.getCookie()
    initParam ${initParam.name} ServletContext.getInitparameter(name)
    pageContext ${pageContext.request.contextPath} 获取WEB应用名
    pageContext ${pageContext.request.sessionid} 获取sessionId
    pageContext ${pageContext.request.remoteAddr} 获取主机名

    5.EL表达式原理及注意点

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

    展开全文
  • EL是jsp内置表达式语言,从jsp2.0开始,用来替代表达式。1 el获取简单数据 request.setAttribute("requestKey", "requestValue"); session.setAttribute("sessionKey", "sessionValue"); pageContext....

    EL是jsp的内置表达式语言,从jsp2.0开始,用来替代<%=..%>表达式。

    1 el获取简单的数据

    <body>
    <%
       request.setAttribute("requestKey", "requestValue");
       session.setAttribute("sessionKey", "sessionValue");
       pageContext.setAttribute("pageKey", "pageValue");
       application.setAttribute("applicationKey", "applicationVlaue");
    %>
    
    获取域对象属性旧方式:
    <%=request.getAttribute("requestKey") %><hr>
    <%=session.getAttribute("sessionKey") %><hr>
    <%=pageContext.getAttribute("pageKey") %><hr>
    <%=application.getAttribute("applicationKey") %><hr>
    
    使用EL获取简单数据:
     ${requestScope.requestKey }<br>
     精简的写法:
     ${pageKey}
    </body>

    使用jsp脚本往request域中添加了一些简单的数据。获取request域数据有两种方式,一种依然是使用jsp脚本来获取,另一种方式是使用el来获取。可见el方式获取域对象中的值比jsp简单得多。
    最常用的el获取域对象中数据的方式是:
    ${属性名}

    2 el获取集合中的数据

    <body>
    <%
    request.setAttribute("arr", new String[]{"aaa","bbb","ccc"});
    
    List<String> list=new ArrayList();
    list.add("list1");
    list.add("list2");
    list.add("list3");
    request.setAttribute("list", list);
    
    Map<String,String>map=new HashMap();
    
    map.put("01", "jilaing");
    map.put("02", "jiaming");
    map.put("age", "13");
    
    request.setAttribute("map", map);
    pageContext.setAttribute("arr.age", "myAge");
    %>
    旧方式获取Map中的数据:<br>
    <%=((HashMap<String,String>)request.getAttribute("map")).get("01") %><br>
    获取request中的数组元素${arr[1]}<br>
    获取request中的List中的元素 ${list[1]}<br>
    获取request中的map元素${map.age}<br>
    获取PageContext特殊形式的元素 ${pageScope["arr.age"]}
    </body>

    可见,使用el获取域中的数组和list集合方式相同。el获取域中的map对象的方式是:${域中的名称.键名}

    3 el中的cookie对象

    cookie是el中11个内置对象之一,相比较其他的对象,cookie对象用得更多更频繁。

    <body>
    <!--第一次打开该页面,cookie没有值,但服务器会将cookie写回浏览器。第二次访问页面的时候就有了  -->
    <%
    Cookie cookie=new Cookie("ceshi","value");
    response.addCookie(cookie);
    
    %>
    cookie的值是:<br>
    ${cookie.ceshi.value }
    
    </body>

    第一次打开该页面,cookie没有值,但服务器会将cookie写回浏览器。第二次访问页面的时候就有了。
    el获取cookie的方式比java更简单,格式:cookie.cookie名称.cookie值。

    4 el获取javabean数据

    public class User implements Serializable {
        private String name;
        private String id;
        private String sex;
    
        public User() {
            super();
    
        }
        public String getName() {
            return name;
        }
        public void setName(String name) {
            this.name = name;
        }
        public String getId() {
            return id;
        }
        public void setId(String id) {
            this.id = id;
        }
        public String getSex() {
            return sex;
        }
        public void setSex(String sex) {
            this.sex = sex;
        }
    }
    <body>
    <%
     User user=new User();
     user.setId("1342644");
     user.setName("kun ge");
     user.setSex("nan");
     session.setAttribute("u", user);
    %>
    老方式获取user的id值:
    <%= ((User)session.getAttribute("u")).getId() %> <br>
    el方式获取user的id值:
    ${u.id }
    </body>

    5 el进行加法计算

    <body>
    <%
    request.setAttribute("q", 5);
    request.setAttribute("w", "10");
    request.setAttribute("e", "9");
    request.setAttribute("r", 12);
    %>
    
    el进行加法运算:
    ${q+w }<br>
    
    </body>

    运行结果为15。

    6 jstl中的判断语句

    <body>
    <%
    ArrayList list =new ArrayList();
    request.setAttribute("li",list);
    %>
    <c:if test="${ empty li}">list 为空</c:if>
    
    </body>

    jstl往往和el配合使用。
    empty运算符表示集合长度是否为0或者对象是否为空。
    test中的值为el判断表达式。c:if标签内的内容为条件满足后执行的内容。

    7 jstl中的forEach

    7.1 输出0-20的所有偶数

    <c:forEach begin="0" end="20" step="2" var="i" varStatus="vs">
    ${i }--${vs.count }--${vs.current }
    </c:forEach>

    begin表示循环从哪里开始,end表示循环到哪里结束,step便是步长,每次循环相加多少。var是给循环的元素起一个名字。varStatus表示循环状态。

    7.1 遍历集合

    <%
    //向域中添加list集合
    List list=new ArrayList();
    list.add("11");
    list.add("22");
    list.add("33");
    
    application.setAttribute("li", list);
    
    //向域中添加Map集合
    
    Map map=new HashMap();
    map.put("name","jialiang");
    map.put("age", 23);
    application.setAttribute("hashMap", map);
    %>
    
    <c:forEach items="${li }" var="item" varStatus="vs">
    ${item }
    </c:forEach>
    <hr>
    <c:forEach items="${hashMap }" var="item" varStatus="vs">
    ${item.key }--${item.value }
    </c:forEach>

    注意,item.key表示map中的键,item.value表示map中的 value

    展开全文
  • EL表达式里面fn的用法

    千次阅读 2015-08-04 09:54:42
    首先要使用EL表达式fn标签,则需要添加:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 首先一个案例如下:${fn:substring(policy.createTime,0,19) }policy.createTime是字符串,0...

    首先要使用EL表达式中的fn标签,则需要添加:

    <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> 

    首先一个案例如下:

    ${fn:substring(policy.createTime,0,19) }

    policy.createTime是字符串,0是开始位置,19是结束位置。

    另外一些常见的方法如下所示:

    fn:contains 判断字符串是否包含另外一个字符串

    <c:if test="${fn:contains(name, searchString)}"> 

    计算list的长度 fn:length(list)

    fn:containsIgnoreCase 判断字符串是否包含另外一个字符串 (大小写无关)

    <c:if test="${fn:containsIgnoreCase(name, searchString)}"> 

    fn:endsWith 判断字符串是否以另外字符串结束

    <c:if test="${fn:endsWith(filename, ".txt")}"> 

    fn:escapeXml 把一些字符转成XML表示,例如

    <字符应该转为&lt; ${fn:escapeXml(param:info)} 

    fn:indexOf 子字符串在母字符串中出现的位置

    ${fn:indexOf(name, "-")} 

    fn:join 将数组中的数据联合成一个新字符串,并使用指定字符格开

    ${fn:join(array, ";")} 

    fn:length 获取字符串的长度,或者数组的大小

    ${fn:length(shoppingCart.products)} 

    fn:replace 替换字符串中指定的字符

    ${fn:replace(text, "-", "&#149;")} 

    fn:split 把字符串按照指定字符切分

     ${fn:split(customerNames, ";")} 

    fn:startsWith 判断字符串是否以某个子串开始

    <c:if test="${fn:startsWith(product.id, "100-")}"> 

    fn:substring 获取子串

    ${fn:substring(zip, 6, -1)} 

    fn:substringAfter 获取从某个字符所在位置开始的子串

    ${fn:substringAfter(zip, "-")} 

    fn:substringBefore 获取从开始到某个字符所在位置的子串

    ${fn:substringBefore(zip, "-")} 

    fn:toLowerCase 转为小写

    ${fn.toLowerCase(product.name)} 

    fn:toUpperCase 转为大写字符

    ${fn.UpperCase(product.name)} 

    fn:trim 去除字符串前后的空格

    ${fn.trim(name)} 

    函数描述

    fn:contains(string, substring)

    如果参数 string中包含参数substring ,返回true 

    fn:containsIgnoreCase(string, substring)

    如果参数 string中包含参数substring (忽略大小写),返回 true 

    fn:endsWith(string, suffix)

    如果参数 string 以参数suffix 结尾,返回 true 

    fn:escapeXml(string)

    将有特殊意义的 XML (和HTML) 转换为对应的 XML character entity code,并返回 

    fn:indexOf(string, substring)

    返回参数 substring在参数string 中第一次出现的位置 

    fn:join(array, separator)

     将一个给定的数组 array用给定的间隔符separator串在一起,组成一个新的字符串并返回。 

    fn:length(item)

    返回参数item 中包含元素的数量。参数 Item类型是数组、collection或者 String。如果是String 类型,返回值是 String中的字符数。 

    fn:replace(string, before, after)

    返回一个 String对象。用参数after字符串替换参数 string中所有出现参数before字符串的地方,并返回替换后的结果 

    fn:split(string, separator)

    返回一个数组,以参数 separator 为分割符分割参数string,分割后的每一部分就是数组的一个元素 

    fn:startsWith(string, prefix)

    如果参数 string以参数prefix 开头,返回 true 

    fn:substring(string, begin, end)

    返回参数 string部分字符串, 从参数begin开始到参数 end位置,包括end 位置的字符 

    fn:substringAfter(string, substring)

    返回参数 substring在参数string 中后面的那一部分字符串 

    fn:substringBefore(string, substring)

     返回参数 substring在参数string 中前面的那一部分字符串 

    fn:toLowerCase(string)

    将参数string所有的字符变为小写,并将其返回 

    fn:toUpperCase(string)

    将参数string所有的字符变为大写,并将其返回 

    fn:trim(string)

    去除参数string 首尾的空格,并将其返回 
    展开全文
  • 类似linux获取变量方法,使用 ${}获取值,这种用法是用来在域里面获得传递值或者是对象。 例: reques.setAttribute(“01”,new X()); 就可以使用 ${“01”}直接获得对象X。 如果放入是Map集合,可以连续使用...
  • JavaWeb之el表达式总结

    2018-11-25 17:29:16
    JavaWeb之el表达式总结一、EL表达式的概述二、EL表达式的常见用法三、EL表达式的分类1、获取数据2、执行运算3、获得Web常用开发对象4、调用Java方法四、补充JSTL的el函数库: 一、EL表达式的概述 表达式语言...
  • JSP(EL表达式

    2019-09-27 16:57:45
    而对于程序员来说,能用最少的精力和代码完成任务是最好的,所以EL表达式的掌握就比较重要了。 简单的表达式语法:${expr} 常见的EL基础操作符 符号 用法 . 访问一个Bean属性或者一个映射条目...
  • 片段片段表达式提供了模板共用简便方法,同时还可以作为参数传递给其它模板。最常见的用途是使用 th:insert 或 th:replace 进行片段插入:<同时,它们可以像其他任何变量一样,在任意地方使用:<关于其详细...
  •   和JSP页面上的EL表达式、Struts2中用到OGNL表达式一样,SpEL根据JavaBean风格getXxx()、setXxx()方法定义属性访问对象图,完全符合我们熟悉操作习惯。    Spring3中引入了Spring表达式语言—SpringEL,...
  • Spring表达式语言(简称SpEL)是一种与JSP2的EL功能类似的表达式语言,可以在运行时查询和操作对象图。 SpEL可以独立于Spring容器使用--只是当成简单的表达式语言来使用;也可以在Annotation或XML配置中使用SpEL,...
  • ognl ognl介绍 Struts2中的valueStack 问题1什么是ValueStack 问题2valueStack结构 问题3值栈对象的创建ValueStack和...问题7为什么EL表达式可以访问valueStack中的数据 OGNL表达式常见用法 号的用法 号的使用 号
  • 【JAVA基础】—JSTL & EL—善用帮助

    热门讨论 2016-10-30 22:56:33
    授之以鱼,不如授之以渔。 JSTL是标签库,EL是表达式,两者一般搭配使用,使JSP... 如果只是使用EL表达式不需要引入任何jar包,只要jsp/servlet容器实现了J2EE1.4/Servlet2.4、JSP2.0规范就可以,其基本格式:${***}
  • 一般标签库会和el表达式一起使用,所以在学习标签库前最后也学习下el表达式的使用。 导入后展开 可以从jar包查看相对应的标签库得tld文档,里面会描述每个标签的说明和用法 先从核心标签库开始 tld文档有几...
  • JSTL 学习2 - 2

    2010-07-24 23:01:00
    流控制 由于可以用 EL 替代 JSP 表达式来指定动态属性值,因此页面创作人员无需使用脚本编制元素。因为脚本编制元素可能是引起 JSP 页面中维护问题主要原因,所以 JSTL...脚本编制元素另一个常见用法是流...
  • jpivot学习总结.doc

    2011-12-09 08:38:08
    该标签的主要作用是销毁所有的查询,它的用法如下: 它只有一个 ID 属性。 4.6. mondrianQuery 该标签的主要作用是让 mondrian 执行指定的查询,该标签需要指定一个 JDBC 的 datasource 或单独指定 JDBC 连接的...
  • Java学习笔记-个人整理

    热门讨论 2012-12-19 09:57:07
    {3.4}正则表达式}{71}{section.3.4} {3.5}StringBuffer}{75}{section.3.5} {3.6}StringBuilder}{76}{section.3.6} {3.7}StringBuilder与StringBuffer缺点}{76}{section.3.7} {3.8}内部类}{77}{section.3.8} ...
  • struts2标签和EL表达式 53 常用数据标签 53 property 输出变量值 53 set 设置变量值 53 action 执行Action 54 date 输出日期 55 i18n、text资源国际化 56 include 包含其他资源执行结果 56 param 传参 57 常用控制...

空空如也

空空如也

1 2
收藏数 25
精华内容 10
关键字:

常见el表达式的用法是