《JSP应用开发与实践 教学课件 ppt 作者 刘乃琦 王冲 第10章 EL表达式》由会员分享,可在线阅读,更多相关《JSP应用开发与实践 教学课件 ppt 作者 刘乃琦 王冲 第10章 EL表达式(57页珍藏版)》请在金锄头文库上搜索。
1、,本章要求:,第10章 EL表达式,EL的基本语法 禁用EL的几种方法 EL表达式中的保留关键字 EL的运算符及优先级 使用EL的隐含对象 定义和使用EL的函数,主要内容,1. 表达式语言(EL)概述 2. 与低版本的环境兼容禁用EL 3. 保留的关键字 4. EL的运算符及优先级 5. EL的隐含对象 6. 定义和使用EL的函数 7. 综合实例通过EL显示投票结果,第10章 EL表达式,10.1.1 EL的基本语法 10.1.2 EL的特点,10.1 表达式语言(EL)概述,EL表达式语法很简单,它以“$”开头,以“”结束,中间为合法的表达式,具体的语法格式如下: $expression e
2、xpression:用于指定要输出的内容,可以是字符串,也可以是由EL运算符组成的表达式。 说明: 由于EL表达式的语法以“$”开头,所以如果在JSP网页中要显示“$”字符串,必须在前面加上符号,即$,或者写成$,也就是用表达式来输出“$”符号。 在EL表达式中要输出一个字符串,可以将此字符串放在一对单引号或双引号内。例如,要在页面中输出字符串“明日科技编程词典”,使用下面任意一行代码都可以。 $明日科技编程词典 $“明日科技编程词典“,10.1.1 EL的基本语法,EL除了具有语法简单、使用方便的特点,还具有以下特点。 EL可以与JSTL结合使用,也可以与JavaScript语句结合使用。
3、EL中会自动进行类型转换。如果想通过EL输入两个字符串型数值(例如,number1和number2)的和,可以直接通过+号进行连接(例如,$number1+number2)。 EL不仅可以访问一般变量,而且还可以访问JavaBean中的属性以及嵌套属性和集合对象。 在EL中可以执行算术运算、逻辑运算、关系运算和条件运算等。 在EL中可以获得命名空间(PageContext对象,它是页面中所有其他内置对象的最大范围的集成对象,通过它可以访问其他内置对象)。 在使用EL进行除法运算时,如果0作为除数,则返回无穷大Infinity,而不返回错误。 在EL中可以访问JSP的作用域(request、se
4、ssion、application以及page)。 扩展函数可以与Java类的静态方法进行映射。,10.1.2 EL的特点,10.2 与低版本的环境兼容禁用EL,10.2.1 使用斜杠“”符号 10.2.2 使用page指令 10.2.3 在web.xml文件中配置元素,使用斜杠符号是一种比较简单的禁用EL的方法。该方法只需要在EL的起始标记“$”前加上“”符号,具体的语法如下: $expression 例如,要禁用页面中的EL“$number”,可以使用下面的代码。 $number 说明: 该语法适合只是禁用页面的一个或几个EL表达式的情况。,10.2.1 使用斜杠“”符号,使用JSP的pa
5、ge指令也可以禁用EL表达式,其具体的语法格式如下: isELIgnored属性:用于指定是否禁用页面中的EL,如果属性值为true,则忽略页面中的EL,否则将解析页面中的EL。 例如,如果想忽略页面中的EL可以在页面的顶部添加以下代码: 说明: 该方法适合禁用一个JSP页面中的EL。,10.2.2 使用page指令,10.2.3 在web.xml文件中配置元素,在web.xml文件中配置元素可以实现禁用服务器中的EL。在web.xml文件中配置元素的具体代码如下: *.jsp true 说明: 该方法适用于禁用Web应用中所有JSP页面中的EL。,同Java一样,EL也有自己的保留关键字,在
6、为变量命名时,应该避免使用这些关键字,包括在使用EL输出已经保存在作用域范围内的变量名,也不能使用关键字,如果已经定义了,那么需要修改为其他的变量名。EL的保存关键字如表10-1所示。 表10-1 EL的保留关键字 如果在EL中使用了保留的关键字,那么在Eclipse中,将给出图10-1所示的错误提示。 图10-1 在Eclipse中显示的错误提示,10.3 保留的关键字,如果忽略该提示,直接运行程序,将显示如图10-2所示的错误提示。 图10-2 在IE浏览器中显示的错误提示,10.4 EL的运算符及优先级,10.4.1 通过EL访问数据 10.4.2 在EL中进行算术运算 10.4.3 在
7、EL中判断对象是否为空 10.4.4 在EL中进行逻辑关系运算 10.4.5 在EL中进行条件运算,10.4.1 通过EL访问数据,通过EL提供的“”和“.”运算符可以访问数据。通常情况下,“”和“.”运算符是等价的,可以相互代替。例如,要访问JavaBean对象userInfo的id属性,可以写成以下两种形式: $userInfo.id $userInfoid 但是也不是所有情况下都可以相互替代,例如,当对象的属性名中包括一些特殊的符号(-或.)时,就只能使用运算符来访问对象的属性。例如,$userInfouser-id是正确的,而$userInfo.user-name则是错误的。另外,EL
8、的“”运算符还有一个用途,就是用来读取数组或是List集合中的数据,下面进行详细介绍。 数组元素的获取 应用“”运算符可以获取数组的指定元素,但是“.”运算符则不能。例如,要获取request范围中的数组arrBook中的第1个元素,可以使用以下面的EL表达式: $arrBook0 说明:由于数组的索引值是从0开始的,所以要获取第1个元素,需要使用索引值为0。,【例10-1】 通过EL输出数组的全部元素。 编写index.jsp文件,在该文件中,首先定义一个包含3个元素的一维数组,并赋初始值,然后通过for循环和EL输出该数组中的全部元素。index.jsp文件的关键代码如下: $reques
9、tI:$bookrequestI 说明: 在上面的代码中,必须将循环变量i保存到request范围内的变量中,否则将不能正确访问数组,这里不能直接使用Java代码片段中定义的变量i,也不能使用输出i。,在运行时,系统会先获取requestI变量的值,然后将输出数组内容的表达式转换为“$book索引”格式(例如,获取第1个数组元素,则转换为$book0),再进行输出。实例的运行结果如图10-4所示。 图10-4 运行结果,List集合元素的获取 应用“”运算符还可以获取List集合中的指定元素,但是“.”运算符则不能。 【例10-2】 通过EL输出List集合的全部元素。 向session域中保
10、存一个包含3个元素的List集合对象,并应用EL输出该集合的全部元素的代码如下: list = new ArrayList(); /声明一个List集合的对象 list.add(“相框“); /添加第1个元素 list.add(“笔筒“); /添加第2个元素 list.add(“鼠标垫“); /添加第3个元素 session.setAttribute(“goodsList“,list); /将List集合保存到session对象中 % list1=(List)session.getAttribute(“goodsList“); /通过循环和EL输出List集合的内容 for(int i=0;i
11、 $requestI:$goodsListrequestI ,上面的代码,在运行后,将显示如图10-5所示的运行结果。 图10-5 显示List集合中的全部元,10.4.2 在EL中进行算术运算,在EL中,也可以进行算术运算,同Java语言一样,EL提供了加、减、乘、除和求余5种算术运算符,各运算符及其用法,如表10-2所示。 表10-2 EL的算术运算符 注意: EL的“+”运算符,与Java的“+”运算符不同,它不能实现两个字符串的相连接,如果使用该运算符连接两个不可以转换为数值型的字符串,将抛出异常;如果使用该运算符连接两个可以转换为数值型的字符串,EL则自动将这两个字符串转换为数值型,
12、再进行加法运算。,在EL中,判断对象是否为空,可以通过empty运算符实现,该运算符是一个前缀(prefix)运算符,即empty运算符位于操作数前方,用来确定一个对象或变量是否为null或空。empty运算符的格式如下: $empty expression expression:用于指定要判断的变量或对象。 例如,定义两个request范围内的变量user和user1,分别设置值为null和“,代码如下: 然后,通过empty运算符判断user和user1是否为空,代码如下: $empty user $empty user1 说明: 一个变量或对象为null或空代表的意义是不同的。null表
13、示这个变量没有指明任何对象,而空表示这个变量所属的对象其内容为空,例如,空字符串、空的数组或者空的List容器。 另外,empty运算符也可以与not运算符结合使用,用于判断一个对象或变量是否为非空。例如,要判断request范围中的变量user是否为非空可以使用以下代码: $not empty user ,10.4.3 在EL中判断对象是否为空,在EL中,通过逻辑运算符和关系运算符可以实现逻辑关系运算。关系运算符用于实现对两个表达式的比较,进行比较的表达式可以是数值型,也可以是字符串型。而逻辑运算符,则常用于对boolean型数据进行操作。逻辑运算符和关系运算符经常一同使用。例如,在判断考试
14、成绩时,可以用下面的表达式判断60分到80分的成绩。 成绩60 and成绩”和“”为关系运算符,and为与运算符。下面我们就对关系运算符和逻辑运算符进行详细介绍。 1关系运算符 在EL中,提供了6种关系运算符。这6种关系运算符不仅可以用来比较整数和浮点数,还可以用来比较字符串。关系运算符的使用格式如下: $表达式1 关系运算符 表达式2,10.4.4 在EL中进行逻辑关系运算,EL中提供的关系运算符如表10-3所示。 表10-3 EL的关系运算符,2逻辑运算符 在进行比较运算时,如果涉及到两个或两个以上的条件判断时(例如,要判断变量a是否大于等于60,并且小于等于80),就需要应用逻辑运算符了
15、。逻辑运算符的条件表达式的值必须是boolean型或是可以转换为boolean型的字符串,并且返回的结果也是boolean。 EL中提供的逻辑运算符如表10-4所示。 表10-4 EL的逻辑运算符 说明:在进行逻辑运行时,只要表达式的值可以确定,将停止执行。例如,在表达式A and B and C中,如果A为true,B为false,则只计算A and B,并返回false;再例如,在表达式A or B or C中,如果A为true,B为false,则只计算A or B,并返回true。,【例10-3】 关系运算符和逻辑运算符的应用示例。 编写index.jsp文件,在该文件中,首先定义两个request范围内的变量,并赋初始值,然后输入这两个变量,最后将这两个变量和关系运算符、逻辑运算符组成条件表达式,并输出。index.jsp文件的关键代码如下: userName=$userName pwd=$pwd $userName!=“ and (userName=“明日“) : $userName!=“ and userName=“明日“ $userName=“mr“ and pwd=“mrsoft“ : $userName=“mr“ and pwd=“mrsoft“ ,运行本实例,将显示如图10-6所示的运行结果。 图10-6 运行结