传智播客Java培训---EL表达式

     今天课间跟同学们聊天的时候聊起最近几天上课的内容,同学们都感觉这几天压力很大,因为这几天上课讲解的东西都是一些基础的但是非常重点的东西,跟以后的课程的学习联系十分密切,这几天讲的东西学不好的话,等到后面学习三大框架会很吃力,有一个哥们用了一个比喻很贴切,他说现在每天都像是在打魔兽世界的副本“阿尔萨斯”,天天都在打一场攻坚战!今天上课主要讲解了EL表达式跟JSP自定义标签,留了作业要我们自己定义标签遍历set集合跟map集合,JSP自定义标签还有一部分没有讲完,所以今天就先把EL表达式的部分总结一下,等明天全部讲完了再总结JSP自定义标签。

 

     EL表达式(Exception Language)
     它原本是JSTL 1.0为方便存取数据所自定义的语言。当时EL只能在JSTL 标签中使用到了JSP 2.0之后,EL 已经正式纳入成为标准规范之一。因此,只要是支持Servlet 2.4 / JSP2.0 的Container,就都可以在JSP 网页中直接使用EL 了
格式:以${开始,以}结尾.

使用EL访问作用域属性
依次从page request session application查找
JSP中使用getAttribute()访问作用域中属性时如果无对应属性返回null
使用EL表达式访问作用域中时如果无对应属性 返回“”字符串
如果对象有同名属性,获得靠前的对象的属性值

属性范围在EL中的名称
JSP名称  EL中的名称
page        pageScope  同页面作用域属性名称和值有关的 Map 类
request     requestScope  同请求作用域属性的名称和值有关的 Map 类
session     sessionScope  同会话作用域属性的名称和值有关的 Map 类
application  applicationScope 同应用程序作用域属性的名称和值有关的 Map 类

 

EL中的隐含对象
EL中有11个隐含对象,常用的有6个,其中与范围有关的隐含对象applicationScope、sessionScope、requestScope、pageScope基本上就和JSP的pageContext、request、session和application一样,还有两个与输入有关的隐含对象:param和paramValues,一般在我们取得用户的请求参数时使用request.getParameter(String name),request.getParameterValues(String name),在 EL中则可以使用param和paramValues两者来取得数据,${param.name}、${paramValues.name}。


使用el表达式的内置对象pageContext时
如果调用的方法是以get开始,并且没有参数,getXxxx()在此时可以写成pageContext.xxxx,此${pageContext.xxxx}等价于pageContext.getXxxx(),并且支持连写.
    如果调用的方法是isXxxx并且方法没有参数,也可使用
获取当前web应用的上下文EL:${pageContext.request.contextPath}
获取当前查询字符串EL:${pageContext.request.queryString}
获取请求的URIEL:${pageContext.request.requestURI}
获取请求方法EL:${pageContext.request.method}
获取sessionIDEL:${pageContext.session.id}
获取是否是新创建的sessionEL:${pageContext.session.new}
获取主机端的服务信息EL${pageContext.servletContext.serverInfo}
获取服务的web application 的名称EL${pageContext.request.contextPath}

 

EL 中.和[]的区别:
在EL 提供 . 和 [ ] 两种运算符来存取数据,两者可以混合使用。
(1) 当要存取的属性名称中包含一些特殊字符,如 . 或 – 等并非字母或数字的符号,就一定要使用 [ ],例如:${user.My-Name }是错误的,应用${user["My-Name"] }
(2) 当需要动态获取值的时候,要使用[].

 

EL中的运算符:
算术运算符  说 明     范 例                                        结 果
+              加        ${ 17 + 5 }                                22
-             减        ${ 17 - 5 }                               12
*               乘        ${ 17 * 5 }                                85
/ 或 div      除         ${ 17 / 5 } 或 ${ 17 div 5 }          3
% 或 mod  余数       ${ 17 % 5 } 或 ${ 17 mod 5 }      2

关系运算符  说 明     范 例                                       结 果
= =  或 eq  等于     ${ 5 = = 5 } 或 ${ 5 eq 5 }        true
!= 或 ne    不等于    ${ 5 != 5 } 或 ${ 5 ne 5 }          false
< 或 lt       小于      ${ 3 < 5 }或 ${ 3 lt 5 }             true
> 或 gt      大于       ${ 3 > 5 }或 ${ 3 gt 5 }           false
<= 或 le    小于等于  ${ 3 <= 5 }或 ${ 3 le 5 }         true
>= 或 ge   大于等于  ${ 3 >= 5 }或 ${ 3 ge 5 }         false

逻辑运算符  说 明      范 例                                      结 果
&& 或 and   交集  ${ A && B } 或 ${ A and B }         true / false
|| 或 or       并集  ${ A || B } 或 ${ A or B }             true / false
! 或 not       非   ${ !A } 或 ${ not A }                    true / false

除了以上三大类外还有几个很重要的运算符:
Empty 运算符 主要用来判断值是否为null 或空的,当使用该运算符判断集合属性时
                   可以判断是否存在该属性, 可以判断该属性对应的集合是否为空集合.
                    如果为空,返回 true. 不为空,返回false.
条件运算符  ${ A ? B : C}
               当A 为true 时,执行B;而A 为false 时,则执行C。
括号运算符  主要用来改变执行优先权,例如:${ A * (B+C) }
               至于运算符的优先权,如下所示(由高至低,由左至右):
               []、.
               ( )
               - (负)、not、!、empty
               *、/、div、%、mod
               +、- (减)
               <、>、<=、>=、lt、gt、le、ge
               = =、!=、eq、ne
               &&、and
     最后还要注意的一点是EL可以自动转换类型,因为从窗体传来的数据类型一律是string,自动转换类型是很必要的!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值