表达式语言EL(Expression Language)

34 篇文章 0 订阅
28 篇文章 0 订阅

为什么要使用EL

JSP2.0之后不建议使用 JSP表达式和JSP脚本片段,建议使用EL代替JSP表达式,使用JSTL代替JSP脚本片段

EL简介

全称:Expression Language,翻译过来叫表达式语言 格式:${表达式} EL表达式主要用来将域对象中的属性输出到页面
EL表达式默认是全域查找 先从page域中查找,找到后直接返回,找不到再去request域中找,找到后直接返回,找不到再继续向其他域找
如果在application域中也找不到就返回一个空串 我们如何精确查找域中的属性值呢?
EL为我们提供了四个Scope对象,这四个对象相当于将域对象中的域单独拿了出来
这四个域对象分别是:pageScope、requestScope、sessionScope、applicationScope
1.pageScope 用来获取page域中的属性值
2.requestScope 用来获取request域中的属性值 sessionScope
3.用来获取session域中的属性值
4.applicationScope 用来获取application域中的属性值

如果域对象中的属性名比较特殊,通过以下方式获取属性值
<%
request.setAttribute("hello-kitty", "value2");
%>
${requestScope['hello-kitty'] }

获取JavaBean中的属性

  • 通过对象.属性名的方式获取对象的属性,调用的是对象的getXXX方法
  • 如果对象的属性还是一个对象,可以一直点下去
h2>获取JavaBean中的属性值</h2>  
     <!-- 使用EL获取JavaBean对象的属性值,通过对象.属性名,调用的是对象的getXXX()方法 -->  
     <%  

          Student stu = new Student(1,"赵阿福");  
          School sch = new School(1,"大吕院",stu);  
          //将stu放到域对象中  
          pageContext.setAttribute("stu", stu);  
          //将sch放到域对象中  
          pageContext.setAttribute("sch", sch);  
     %>  
     <!-- 如果对象的属性仍是一个对象,可以一直点下去 -->  
     ${sch.student.name }  

EL中的11个隐含对象(内置对象)

一个我们比较熟悉:pageContext

pageContext
pageContext即是EL中的隐含对象也是JSP中的隐含对象
类型:PageContext
作用:与JSP中的作用完全一样,一个顶九个,可以获取JSP中的其他隐含对象
获取request对象
pageContext.request p a g e C o n t e x t . r e q u e s t 获 取 项 目 的 虚 拟 路 径 {pageContext.request.contextPath}

四个Scope对象

pageScope
类型:Map<String , Object>
作用:获取page域中的属性值
requestScope
类型:Map<String , Object>
作用:获取request域中的属性值
sessionScope
类型:Map<String , Object>
作用:获取session域中的属性值
applicationScope
类型:Map<String , Object>
作用:获取application域中的属性值

六个其他隐含对象

param
类型:Map<String , String>
作用:获取请求参数
paramValues
类型:Map<String , String[]>
作用:获取请求参数中一个键对应多个值的情况
header
类型:Map<String , String>
作用:获取请求头中的信息
headerValues
类型:Map<String , String[]>
作用:获取请求头中一个键对应多个值的情况
cookie
类型:Map<String , Cookie>
作用:根据cookie对象的名称获取Cookie对象
initParam
类型:Map<String , String>
作用:获取当前Web应用的初始化参数
<span style="white-space:pre">    </span>- El中隐含对象的演示 -->  
  <!-- 获取请求参数 -->  
  欢迎您,${param.username }<br><br>  
  <!-- 获取请求头的信息 -->  
  ${header['User-Agent'] }<br><br>  
  <!-- 获取Cookie对象 -->  
  ${cookie.JSESSIONID }<br><br>  
  <!-- 获取当前Web应用的初始化参数 -->  
  ${initParam.encode }  

EL中的运算

在EL表达式中可以直接进行加、减、乘、除等运算
我们常用的一个运算符:empty
我们主要使用empty运算符来判断一个字符串或一个集合是否为空
emptynull的区别
空串时:null返回falseempty返回true
空集合时:null返回falseempty返回true
<span style="white-space:pre">    </span><!-- empty运算符的应用 -->  
    <!-- empty与null相似的地方 -->  
<%  
<span style="white-space:pre">    </span>request.setAttribute("hello", null);  
%>  
使用null的结果:${hello == null }<br>  
使用empty的结果:${empty hello }<br>  
<hr>  
<span style="white-space:pre">    </span><!-- empty与null的区别一-->  
<%  
<span style="white-space:pre">    </span>request.setAttribute("hello2", "");  
%>  
使用null的结果:${hello2 == null }<br>  
使用empty的结果:${empty hello2 }<br>  
<span style="white-space:pre">    </span><!-- empty与null的区别二-->  
<%  
<span style="white-space:pre">    </span>List list  = new ArrayList();  
<span style="white-space:pre">    </span>list.add("hello");  
<span style="white-space:pre">    </span>request.setAttribute("list", list);  
%>  
使用null的结果:${list == null }<br>  
使用empty的结果:${not empty list }<br>  

<!--  
<ol><li><span style="font-family: Arial, Helvetica, sans-serif;"> </span><span style="font-family: Arial, Helvetica, sans-serif;">通常使用empty运算符来判断一个字符串或一个集合是否为空</span></li></ol>--> 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值