el表达式(语法使用,运算,隐藏对象)

总结以上:

  1:语法:${标识符}

  2:原理:调用pageContext.findAttribute("标识符")函数,解析代码:

out.write((java.lang.String) org.apache.jasper.runtime.PageContextImpl.proprietaryEvaluate("${标识符}", java.lang.String.class, (javax.servlet.jsp.PageContext)_jspx_page_context, null, false));
 3:返回值:依次从pageContext--->request--->session--->servletContext(从小到大)的容器中去相应 标识符名 的属性值,获取则返回,没有返回“”空串

 4:el表达式是调用findAttribute查找容器,并不能获得同一jsp页面未加入容器的变量(加入容器setAttribute())

 5:查找变量值,是根据setAttribute(name,value)中的name名获取,与变量本身的名字无关(相当于键值对的key值)

 6:对于基本变量,根据属性名获取;对于map集合,通过属性名.key值获取;对于数组,list集合,通过属性名[i] 下标获取,示例:

<!-- 用EL表达式读取JavaBean中的信息,注意“表达式”是“属性名” -->
     <%
           User user = new User();
     		user.setName("张三");
     		user.setAge(25);
     		//一定要把数据放到容器中
     		pageContext.setAttribute("u", user);
     %>
     ${u}<br/>
     ${u.name},${u.age}
     
     <hr/><br/><br/>
     <!-- 用EL表达式读取Map中的信息 -->
     <%
           Map<String,Object> map = new HashMap<String,Object>();
     	   map.put("name", "Rose");
     	   map.put("sex", "Female");
     	   map.put("age", 25);
     	   map.put("tel", "13812345678");
     	   
     	   map.put("friend",user);
     		//一定要把数据放到容器中
     		request.setAttribute("m", map);
     %>
     ${m.name},${m.sex},${m.age}<br/>
          ${m.friend.name}<br/>
     
     <hr/><br/><br/>
     <!-- 用EL表达式读取List中的信息 -->
     <%
           List list = new ArrayList();
           list.add("aaa");
           list.add(user);
           list.add(map);
     	   session.setAttribute("list", list);
     %>
     ${list[0]},${list[1].name}<br/>
          ${list[2].friend.name}<br/>

el的运算规则:

代码示例:

<!-- 演示EL表达式中的运算 -->   
    //1 可以使用算术运算符: + - *  /  % 等 <br/>
      ${u.age+10}
    
    //2 可以使用比较运算符: ==  !=  <=  >  >= 等 <br/>
      ${u.name=="张三"}
    
    //3 逻辑运算符: &&   ||   !(非) 等 <br/>
    ${u.name=="张三" && u.age>20 }
    
    //4 条件运算符: 即“?”号表达式 <br/>
    ${u.name!="张三" ? 100: 50 }
   
    //5 empty运算符: 如果表达式的值为null  或者  不存在该变量  或者  是一个List或Map但其中不包含元素  ---这些返回的都是true <br/>
    ${empty dk }   ---true
    ${empty map }  ---true
    ${empty m }    ---false
    ${!empty m }   ---true
note: 数据不符会出异常

      1:算术运算当 ${标识符}中的标识符是可Number型数据才可运算(即:int Integer long 或者 只有数字的String型)

      2:Number数据不支持逻辑运算符

      3:等等(使用运算符要注意数据真正的类型,是否可以运算)

  el中的隐藏对象:

pageContext是js中pageContext对象,只能调用其中的方法函数(以属性方式,不要括号,函数要存在)

....Scope四个域是相应Map对象,调用的是getKey()函数(以属性方式,key值可不存在),并且只从该容器中取值,没有不向其他容器查看,返回空串

代码示例:

<!-- 从指定的容器中读取数据 -->
    ${pageScope.u},
    ${requestScope.u},
    ${requestScope.m},
    ${sessionScope.list[0]}

代码示例:

${header}<br/>
    ${header.host}<br/>
    ${header.cookie}<br/>
    ${cookie.JSESSIONID.value}<br/>
    <br/>
    ${param}<br/>  //演示访问地址获取自带的参数:http://localhost:8080/elWeb/?name=Jack&age=21
    ${param.age }<br/> 
    ${paramValues}<br/>
    ${paramValues.name[0]}<br/>



  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值