码迷,mamicode.com
首页 > Web开发 > 详细

JSP编程专题2之JSP核心二(EL表达式,EL运算符以及除了和四个域属性空间相关的EL内置对象)

时间:2017-10-22 17:03:19      阅读:396      评论:0      收藏:0      [点我收藏+]

标签:el表达式   从指定域中获取数据   问bean的属性   获取数组和map以及list中的元素   el运算符   除了和四个域属性空间相关的el内置对象   

1、EL表达式:

-  EL,Expression Language,表达式语言,是一种在JSP页面中获取数据的简单方式。EL表达式是从JSP2.0版本开始才引入的概念。

-  EL表达式的基本语法形式很简单:在JSP页面的任何静态部分均可以通过${expression}的形式获取到指定表达式的值。

-  需要注意的是,EL只能从四大域中获取数据。其查找的顺序为:依次按照由小到大的范围从四大域中查找指定名称的属性值。(pageContext,request,session,applicaiton)

如:

技术分享


a、从指定域中获取数据:

-  从pageContext依次查找到application域空间,会降低执行效率。若是某个属性确定存放在某个域属性空间中,则可以指定直接从该空间中查找。此时需要借助EL的四大与属性空间相关的内置对象:

技术分享


b、访问Bean的属性:(可以多次使用点号运算符)

-  EL可以通过${key.属性}的方式获取到指定对象属性值。其底层实际调用的是该对象的相应属性的get方法。

-  当然,也可以使用${key[‘属性‘]}或者是${key["属性"]}的方式获取,该方式不常用。

技术分享


c、获取数组中的元素:

-  EL可以通过${key的[索引]}的方式获取到指定索引的元素。不过,需要注意的是,若数组中不存在该指定索引的元素,系统不会抛出数组越界异常。

技术分享


d、获取List中的元素:

-  与获取数组中的元素相同,通过${key[索引]}的方式可以获取List中的指定索引的元素。若List中不存在指定索引的元素,系统并不会抛出越界异常。(无法使用EL表达式访问Set,因为Set是无序的,没有索引的概念)

技术分享


e、获取Map中的元素:EL通过${attributeName.mapKey}的方式可以获取指定Map的指定key的值:

技术分享


2、EL运算符:

-  EL表达式可以进行各种运算,其中常用的运算符有:

技术分享

-  除了上述运算符外,还有一个非常有用的运算符empty,其用法为${empty 变量},结果为布尔值。若变量为定义,则返回值为true;若变量为String类型,且其值为空串,则返回值为true;若变量为引用类型,且其值为null,则返回值为true;若变量为集合类型,且其不包含任何元素,则返回值为true。

技术分享


3、除了和四个域属性空间相关的EL内置对象:

-  就像JSP的Java代码块以及表达式块中可以使用九个内置对象一样,EL表达式中,同样也存在有内置对象,并且存在11个内置对象。常用的内置对象,除了前面使用过的四个域属性空间相关的内置对象之外,还有如下几个:


a、pageContext:

-  该pageContext与JSP内置对象中的pageContext是同一个对象。通过该对象,可以获取到request、response、session、servletContext、servletConfig等对象。注意,这些对象在EL中不是内置对象。这些对象只能够通过pageContext获取。

-  在EL中直接使用${pageContext.request}即可获取request对象。当然,其底层实际调用的是pageContext.getRequest()方法。同理,也可以通过类似方法获取到其他对象。

-  在这些获取的对象中,有一个是实际工程中最常用的:${pageContext.request.contextPath},用于获取当前项目发布到服务器中的名称,一般会用在JSP页面的路径前。

技术分享

-  在EL的11个内置对象中,除了pageContext外,其他10个内置内置对象,其类型均为java.util.Map类型。


b、param:

在EL中通过${param.参数名}可获取请求中的指定参数值,其底层实际调用的是:request.getParameter(),例如,提交的请求为:

技术分享

-  在JSP页面中通过如下方式,可获取到name参数的值为abc:

技术分享


c、paramValues:

-  若提交的请求中同一参数具有多个值,则可通过${paramValues.参数名[索引]}获取到指定索引号的该参数值。例如,提交的请求为:

技术分享

-  在JSP页面中通过如下方式,可获取请求中的指定参数值:

技术分享


d、如果想获取web.xml中<context-param>标签中的子标签<param-value>的内容,则可通过${initParam.<param-name>标签中的内容}进行获取:

技术分享

-  在JSP页面中通过如下方式获取:

技术分享





本文出自 “12392717” 博客,请务必保留此出处http://12402717.blog.51cto.com/12392717/1975027

JSP编程专题2之JSP核心二(EL表达式,EL运算符以及除了和四个域属性空间相关的EL内置对象)

标签:el表达式   从指定域中获取数据   问bean的属性   获取数组和map以及list中的元素   el运算符   除了和四个域属性空间相关的el内置对象   

原文地址:http://12402717.blog.51cto.com/12392717/1975027

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!