EL表达式、语法及运算
EL表达式
一、EL表达式的概念
EL表达式是为了便于获取数据而定义的一种语言,JSP 2.0之后才成为一种标准。下面的示例是一个简单的EL表达式:
<%@ page contentType="text/html; charset=UTF-8"%>
${stuno + 1}
二、EL表达式的基本语法
EL表达式的出现让Web的显示层发生了大的变革,EL表达式用于获取数据,在JSP 2.0之后成为一种标准,是由JSP 标准标签库专家组和JSP 2.0 专家组开发。
EL表达式的语法格式:${标识符}(必须以“${”开始,以“}”结束“标示符”具体表达式的内容)
在JSP页面中使用的形式,通知JSP引擎调用pageContext.findAttribute()方法,以标识符为关键字从各个域对象中获取对象。如果域对象中不存在标识符所对应的对象,则返回结果为“”(注意,不是null)。
三、语法结构
1、JSP EL用于以下情形
静态文本
标准标签和自定义标签(可以作为元素的值,也可以在自定义或者标准动作元素的内容中使用)
EL不能在脚本元素中使用
2、[]与.运算符
EL提供(.)和([])两种运算符来存取数据,即使用点运算符(.)和方括号运算符([])。
点运算符和方括号运算符可以实现某种程度的互换,如${https://www.360docs.net/doc/bd11420299.html,}等价于${student [“name”]}。
当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号时,就一定要使用[]。例如${https://www.360docs.net/doc/bd11420299.html, }应当改为${student[“name”] }。
如果要动态取值,就可以用[]来做,而.无法做到动态取值。例如${sessionScope.student[data]}中data 是一个变量。
3、变量
EL存取变量时间的方法很简单,例如${username}。它的意思是取出某一范围中名称为username 的变量。
属性范围在EL中的名称如表所示:
4、文字常量
一个EL表达式包含变量、文字常量、操作符。文字常量主要包括字符串、数字和布尔值、还有NULL,其中
字符串是由任何由单引号或双引号引起来的一串字符。
数字常量包括整型、浮点型,整型表示十进制、十六进制和八进制类型的值,浮点型与Java类似,可以包含任何正的或者负的浮点数。
布尔型包括true和false。
${true} ${10} ${10.5f} ${“hello”} ${null}
5、操作符
EL表达式的操作符主要有
算术运算符
算术运算符主要有平时常用的“+”、“-”、“*”、“/”、“%” 。
关系运算符
关系运算符主要有“==”、“!=”、“<”、“>”、“<=”、“>=”
逻辑运算符
逻辑运算符主要有“&&”、“||”、“!” 。
验证运算符“empty”与条件运算符“?:”
四、EL表达式的隐式对象
在JSP中已经介绍了9个内置对象,在EL表达式中共有11个隐式对象
(一)与范围有关的隐式对象
与作用范围有关的EL隐含对象包含有:pageScope、requestScope、sessionScope和applicationScope
1、它们可以读取使用JSP内置对象pageContext、request、session以及application的setAttribute()方法所设定的对象的数值-----即getAttribute(String name),却不能取得其他相关信息。
2、例如,要取得session中储存的一个username属性的值,可以利用下面的方法:
session.getAttribute("username")
在EL中则使用下面的方法:${https://www.360docs.net/doc/bd11420299.html,ername}
注意:如果没有设定使用EL内置对象的作用范围,则按照pageScope、requestScope、sessionScope 和applicationScope的先后顺序读取属性值。
(二)与输入有关的隐式对象
1、与输入有关的隐含对象有两个,即param和paramValues,它们是EL中比较特别的隐含对象。例如,要取得用户的请求参数时,可以利用下列方法:
(1)request.getParameter(String name)
(2)request.getParameterValues(String name)
2、在EL中则可以使用param和paramValues两者来取得数据:
(1)${https://www.360docs.net/doc/bd11420299.html,}
(2)${https://www.360docs.net/doc/bd11420299.html,}
(三)其他隐式对象
1、cookie
用来取得使用者的cookie值,例如在cookie中设定了username属性值,可以使用
${https://www.360docs.net/doc/bd11420299.html,ername.value}来取得属性值。
2、header和headerValues
读取请求的头数据,使用header或headerValues内置对象,例如${header[“User-Agent”]},headerValues则用来取得所有的头信息,等价于调用request.getHeaders()方法。
3、initParam
initParam用来读取设置在web.xml中的参数值。例如${initParam.repeat},等价于:
(String)application.getInitParameter(“repeat”);或
servletContext.getInitParameter(“repeat”);
4、pageContext
pageContext用于取得其他有关用户要求或页面的详细信息
${pageContext.request.queryString} 取得请求的参数字符串
${pageContext.request.requestURL} 取得请求的URL,不包括参数字符串
${pageContext.request.contextPath} 服务的web application 的名称
${pageContext.request.method} 取得HTTP 的方法(GET、POST)
${pageContext.request.protocol} 取得使用的协议(HTTP/1.1、HTTP/1.0)
${pageContext.request.remoteUser} 取得用户名称
${pageContext.request.remoteAddr } 取得用户的IP 地址
${pageContext.session.new} 判断session 是否为新的
${pageContext.session.id} 取得session 的ID
${pageContext.servletContext.serverInfo} 取得主机端的服务信息
五、EL的禁用
(一)在JSP 2.0中默认是启用EL表达式的,但如果在JSP页面中使用了与JSP EL标记符相冲突的其他技术,可以通过使用page指令的isELIgnored属性来忽略JSP EL的标识符。
1、<%@page isELIgnored="true|false"%>
(1)true:表示忽略对EL表达式进行计算。
(2)false:表示计算EL表达式。
2、isELIgnored默认为false。
(二)还可以修改web.xml来决定当前的web应用不使用JSP EL。
作业━━第 1 章(2)━━运算符与表达式
运算符与表达式 【学习要点】 1.掌握运算符的目数、优先级、结合性等概念。 2.掌握算术运算及其应用。 3.掌握自增、自减运算及其应用。 4.掌握关系、逻辑运算及其应用。 5.掌握位运算及其应用。 6.掌握赋值、复合赋值运算及其应用,掌握赋值兼容时的类型转换。 7.掌握表达式求值时类型的自动转换和强制转换。 8.掌握表达式的组成,掌握逻辑表达式的优化及其副作用。 9.掌握逗号运算符、sizeof运算符、条件运算符及其应用。 ------------------------------------------------------------------------------------------------------------------------------------------------- 【例题分析】 1.若int x,y,z;下列表达式中运算结果与x=y=24相同的是______。 A.x=(y=z=8,4*6) B.x=y=(z=8,4*6) C.x=y=z=8,4*6 D.x=(y=z=8),4*6 【答案】B 【解析】 ①C++语言的赋值运算有别于其它高级语言,逗号运算又是其它高级语言所没有的。 ②在赋值表达式中,可以有多个赋值运算符,计算顺序自右向左,运算优先级低,仅高于逗号运算符。 ③逗号既是分隔符,又是运算符,可以用一个逗号运算符或多个逗号运算符将多个表达式连接成逗号表达式,计算顺序自左向右,并将最后一个表达式的值作为整个逗号表达式的值,逗号运算优先级最低。 2.若int i=6,k=0;下列表达式中运算结果使k=7的是______。 A.k=i+++k B.k=k+i++ C.k=++i+k D.k=k+++i 【答案】C 【解析】 ①自增++、自减--运算符是C++语言特有的。 ②运算符++、--出现在变量的前面或后面,其运算结果是不同的。若++、--出现在变量前,则先将变量的值加1(或减1)后,再将变量的值参加运算;反之则先将变量的值参加运算,再将变量的值加1(或减1)。 ③自增、自减运算符的优先级高于算术运算符,因此对于k=i+++k:解释为i++,再加k;对于k=k+++i:解释为k++,再加i。 3.表达式‘A’+’B’+20的值是______。 【答案】151 【解析】不同类型的数据混合运算时,系统可以自动进行类型转换,将表示范围小的数据类型转换成另一操作数的相同类型后再参与运算,则转换为65+66+20=151。 4.若int e=8;double f=6.4,g=8.9;则f+int(e/3*int(f+g)/2)%4的值是______。 【答案】9.4 【解析】 ①不同类型的数据混合运算时,可以使用强制类型转换符,将一种数据类型强制转换成另一种数据类型后再参与运算。 ②表达式中:e/3的值是整型数2,int(f+g)的值是整型数15,int(e/3*int(f+g)/2)的值是整型数15,15%4的值是整型数3,最后加上实型数f,得到最终值是实型数9.4。 1
EL表达式语法介绍
1.1 EL表达式: EL表达式规定为:eval-expression和literal-expression,同时E L表达式支持Compositeexpressions,很多EL表达式(eval-ex pressions和literal-expressions)被聚合在一起。 EL表达式被解析成数值表达式和方法表达式。其中,取值表达式去引用一个值,而方法表达式则是关联一个方法。一旦被解析之后,表达式能够被优化地计算一次或多次。 下面我们来分为:eval-expression、literal-expression、Compo siteexpressions来讲述 1.1.1Eval-expression Eval-expression是以使用${expr}或者#{expr}结构的形式构成。两种方式都是相同的方式,能很好被解析和计算,尽管它们在使用时有着不同的意义从技术方面来说。 从J2EE层规范协定来说,${expr}结构是直接计算而#{expr}结构则是延期计算,这种界定符号指出了在J2EE层两种表达式类型的语义上面的区别。#{expr}这种界定符号被称为延迟计算是因为直到系统需要的时候才计算。而${expr}这种界
定符号则是在JSP页面编译的时候就计算,就是为什么叫做直接计算的原因。 1.1.1.1作为取值表达式的计算表达式 当解析成一个取值表达式的时候,eval-expression能被计算成左值和右值。若在EL中有等号操作符号出现,右值是类型出现在等号的右边的表达式,左值同理。 右值比如: EL表达式总结 EL表达式总是用大括号括起,而且前面有一个美元符($)前缀:${expression}。 表示式中第一个命名变量要么式一个隐式对象,要么是某个作用域(页面作用域、请求作用域、会话作用域或应用作用域)中的一个属性。 点号操作符允许你使用一个Map键或一个bean性质名来访问值,例如,使用${foo.bar}可以得到bar的值,在此,bar是Map foo的Map键名,或者是bean foo的一个性质。放在点号操作符右边的东西必须遵循Java的标识符命名规则!(换句话说,必须以一个字母、下划线或美元符开头,第一个字符后面可以有数字,但不能有其他字符)。 点号右边只能放合法的Java标识符。例如,${foo.1}键就不可以。 []操作符比点号功能更强大,因为利用[]可以访问数组和List,可以把包含命名变量的表达式放在中括号里,而且可以做任意层次的嵌套,只要你受得了。 例如,如果musicList是一个ArrayList,可以用${musicList[0]}或${musicList[“0”]}来访问列表的第一个值。EL并不关心列表索引加不加引号。 如果中括号里的内容没有用引号引起来,容器就会进行计算。如果确实放在引号里,而且不是一个数组或List的索引,容器就会把它看作是性质或键的直接命名。 除了一个EL隐式对象(PageContext)外,其他EL隐式对象都是Map。从这些隐式对象可以得到任意4个作用域中的属性、请求参数值、首部值、 cookie值和上下文初始化参数。非映射的隐式对象是pageContext,它是PageContext对象的一个引用。 不要把隐式EL作用域对象(属性的Map)与属性所绑定的对象混为一谈。换句话说,不要把requestScope隐式对象与具体的JSP隐式对象 request混淆。访问请求对象只有一条路,这就是通过pageContext隐式对象来访问(不过,想从请求得到的一些东西通过其他EL隐式对象也可以得到,包括param/paramValues、header/headerValues和cookie)。 EL允许你调用一个普通Java类中的公共静态方法。函数名不一定与具体的方法名相匹配!例如,${foo:roolIt()}并不意味着包含函数的类中肯定有一个名为roolIt()的方法。 使用一个TLD将函数名(例如roolIt())映射到一个具体的静态方法。使用 第 3 章运算符和表达式 运算符指明对操作数所进行的运算。按操作数的数目来分,可以有一元运算 符 (如 ++、--,二元运算符(如 +、>和三元运算符 (如?:,它们分别对应于一个、两个和三个操作数。对于一元运算符来说 ,可以有前缀表达式 (如++i 和后缀表达式 (如 i++,对于二元运算符来说则采用中缀表达式(如a+b。按照运算符功能来分,基本的运算符有下面几类 : 1.算术运算符 (+,-,*,/,%,++,-- 2.关系运算符 (>,<,>=,<=,==,!= 3.布尔逻辑运算符 (!,&&,|| 4.位运算符 (>>,<<,>>>,&,|,^,~ 5.赋值运算符 (=,及其扩展赋值运算符如+= 6.条件运算符 ( ?: 7.其它 (包括分量运算符·,下标运算符 [],实例运算符 instance of,内存分配运算符new,强制类型转换运算符(类型,方法调用运算符 ( 等 本章中我们主要讲述前6类运算符。 § 3.1算术运算符 算术运算符作用于整型或浮点型数据 ,完成算术运算。 一、二元算术运算符 如下表所示运算符用法描述 + op1+op2 加 - op1-op2 减 * op1*op2 乘 / op1/op2 除 % op1%op2 取模(求余 Java对加运算符进行了扩展,使它能够进行字符串的连接 ,如 "abc"+"de",得到 串 "abcde"。我们将在第七章中讲解。与C、 C++不同,对取模运算符%来说,其操作数可以为浮点数, 如 37.2%10=7.2。 二、一元算术运算符 如下表所示 : 运算符用法描述 + +op 正值 - -op 负值 ++ ++op,op++ 加1 -- --op,op-- 减1 i++与 ++i的区别 i++在使用i之后,使 i的值加 1,因此执行完 i++后,整个表达式的值为 i,而 i的值变为 i+1。 ++i在使用i之前,使 i的值加 1,因此执行完 ++i后 ,整个表达式和 i的值均为 i+1。 对 i--与 --i同样。 例 3.1.下面的例子说明了算术运算符的使用 public class ArithmaticOp{ public static void main( String args[] { int a=5+4; //a=9 int b=a*2; //b=18 int c=b/4; //c=4 int d=b-c; //d=14 int e=-d; //e=-14 int f=e%4; //f=-2 double g=18.4; EL和JSTL 主要内容 ?EL表达式 ?JSTL标签库 1.EL表达式 EL表达式又称为表达式语言(Expression Language),它是JSP中一个很重要的组成部分。在JSP页面中使用EL表达式,可以简化对变量和对象的访问。 EL表达式的语法非常的简单,所有的EL表达式都是以“${”开始,以“}”结束,比如${name}。EL表达式会将表达式中的结果在页面上输出,就像使用JSP的表达式结构或使用out内置对象进行输出一样。 EL表达式对运算符支持 使用EL表达式进行算术运算,在EL表达式中支持+、-、*、/、%运算,示例如下: 代码演示:EL表达式算术运算 <%@ page language="java" pageEncoding="UTF-8"%> EL表达式
[java入门学习]第 3 章 运算符和表达式.
EL表达式与JSTL
12 * 15 = ${12*15}
12 - 15 = ${12-15}
12 / 15 = ${12/15}
12 % 15 = ${12%15}
图1 EL表达式算术运算结果 在EL表达式中还可以支持关系运算符操作,示例如下: 代码演示:EL表达式关系运算符
12==15 ${12==15}12<15 ${12<15}
12>15 ${12>15}
12<=15 ${12<=15}
12>=15 ${12>=15}
12!=15 ${12!=15} EL表达式除了支持普通的关系运算符外,还可以使用字符来表示关系运算符,下面的写法和上面使用普通关系运算符表示的顺序一一对应: 代码演示:EL表达式关系运算符 12==15 ${12 eq 15}
12<15 ${12 lt 15}
12>15 ${12 gt 15}
12<=15 ${12 le 15}
12>=15 ${12 ge 15}
12!=15 ${12 ne 15}
运算符和表达式教案
QBASIC语言程序设计之 运算符和表达式 科目:计算机 授课人:赵华 时间:2007年10月
《运算符和表达式》教案 教学目标: 1、识记运算符的分类及表达式的定义。 2、掌握算术运算符的运算规则。 3、掌握QBASIC表达式的书写规则。 4、掌握算术表达式的求值方法。 教学重点: 1、掌握算术运算符的运算规则。 2、掌握算术表达式的求值方法。 教学难点: 1、掌握算术运算符的运算规则。 2、掌握算术表达式的求值方法。 课前巩固: 1、函数SQR(X)的功能是什么?(举例介绍) 2、函数INT(X)的功能是什么?(举例介绍) 教学内容: 一、运算符的分类 运算符表示对数据进行的具体运算。在QBASIC中分为四类:算术运算符、字符串运算符、关系运算符、逻辑运算符本节我们重点学习算术运算符和算术表达式的有关内容。 二、算术运算符 1、种类: 2、运算规则: ①^ 是乘方运算符: 例如:6^2就表示数学上的62,其值等于36。 2^-2就表示数学上的2-2,其值等于0.25。
② \ 是整除运算符: 运算功能是:如果参与运算的两个数是整数,运算结果为商的整数部分;如果参与运算的量含有小数,则系统先将它们按四舍五入转换为整数,然后再进行运算。 例1: 7 \ 2 = 3 10 \ 4 = 2 例2: 8.7 \ 5 = 1 12.37 \ 4.78 = 2 ③ MOD 是求余运算符: 运算功能是:如果参与运算的两个数是整数,运算结果为两数相除后的余数;如果参与运算的量含有小数,则系统先将它们按四舍五入转换为整数,然后相除取它们的余数。 例1: 12 MOD 5 = 2 23 MOD 4 = 3 例2: 11.7 MOD 8 = 4 13.23 MOD 4.76 = 3 三、算术表达式 1、什么叫表达式? 是指用圆括号和运算符将常量、变量和函数连接起来的式子。 2 、表达式分为哪几类? 根据运算性质不同可分为四类: 算术表达式 、 字符表达式 、 关系表达式 、 逻辑表达式 3、什么是算术表达式? 就是用圆括号和算术运算符将数值常量、变量和函数连接起来的式子。 4、怎样把代数式写成QBASIC 的算术表达式 例1: 2X + Y +6 写成QBASIC 表达式为: 2*X +Y + 6 例2:A AC 24B +B -2-写成QBASIC 表达式为: (-B+SQR (B^2-4*A*C ))/(2*A) 例3: B A y x +写成QBASIC 表达式为: (ABS (X )* ABS (Y ))/(A+ B )
第3章表达式与运算符测试
C语言第3章《运算符与表达式》测试题 一、选择题(每题2分,共50分) 1、表达式“2,4,6,8”的值为() A.2 B.4 C.6 D.8 2、以下程序的输出结果是() main() {int a=12,b=0x12; printf(“%d%d\n”,--a,++b); } A.12 12 B.12 18 C.11 10 D.11 19 3、设x和y都是int型变量,则执行表达式“x=(y=4,z=16),k=32”后,x的值为() A.4 B.16 C.32 D、52 4、设x为int型变量,执行语句“x=’A’;x*=2+2;”后,的值为() A.65 B.260 C.132 D.语句错误 5、若有语句“int a=5;a++*2;”则表达式“a++*2”的值为() A.7 B.12 C.5 D.10 6、设x和y为int型变量,表达式“x+=y;y=x-y;x-=y;”的功能是() A.把x和y按从小到大排列 B.把x和y按从大到小排列 C.无确定结果 D.交换x和y的值 7、下面程序的输出结果是() main() {int x=’\23’; printf(“%d\n”--x); } A.19 B.18 C.23 D.24 8、若变量f已定义为float型, i为int 型,则下面()表达式(或语句)能够实现将f的数值保留小数点后两位,第3位进行四舍五入的运算。 A.f=(f*100+0.5)/100.0 B.i=f*100+0.5,f=i/100.0; C.f=(int)(f*100+0.5)/100 D.f=(f/100+0.5)*100.0 9、下面表达式正确的是() A. a+b=5 B.56=a11 C.5.6+6.2%3.1 D.a=5,b=6,c=7 10、若t为double型变量,执行逗号表达式“t=(x=0,x+5),t++;”的输出结果是()
运算符和表达式
关系运算符和关系表达式导学案 班级:姓名: 6学习目标: 1.了解关系运算和关系表达式的概念,掌握关系运算符的功能、优先级、结合性,学会正确书写和计算关系表达式的值。 2.了解逻辑运算和关系表达式的概念,掌握逻辑运算符的功能、优先级、结合性,学会正确书写和计算逻辑表达式的值。 学习重点: 关系运算符和逻辑运算符的优先级和结合性、关系表达式和逻辑表达式值的计算。 【课前预习】 1.C语言提供了一组关系运算符,其基本信息如图所示,用来比较两个运算对象之间的关系。 运算符名称分类优先级结合性< <= > >= == != 2.C语言提供了3种逻辑运算符,其基本信息如图所示。 运算符名称分类优先级结合性! && || 【新课讲解】 任务一:关系运算符和关系表达式 一、关系运算的概念: 二、关系运算符及其优先次序: 1.运算符种类: 2.优先次序:
3.结合性: 三、关系表达式 1.概念: 2.一般形式: 3.关系表达式的值: 任务二:逻辑运算符和逻辑表达式 一、逻辑运算的概念: 二、逻辑运算符及其优先次序: 1.运算符: 2.真值表: a b !a !b a&&b a||b 真真 真假 假真 假假 结论: 3.优先次序: 4.结合性: 三、逻辑表达式 1.概念: 2.逻辑表达式的值: 3.说明:
【巩固练习】 1.假设有三条边a、b、c,写出它们能构成三角形的逻辑表达式。 2.已定义“char ch='$';”、“int i=1,j;”,执行j=!ch&&i++以后,i的值为__。 3.一个数既能被3整除又能被5整除的表达式。 4.如果a=3,b=2,c=1,那么a>b
EL表达式
EL: 简介: (Expression Language.) 作用:EL表达式存取变量数据。方便使用。 语法结构: ${ ……. } EL运算符: .与[] EL提供了.和[] 两个运算符存取数据 假设session变量为user的javaBean,有一个name属性,取值为${https://www.360docs.net/doc/bd11420299.html,} 或者${https://www.360docs.net/doc/bd11420299.html,er[“name”]} 算术运算符 有五个:+、-、*或$、/或dive、%或mod ${2+3} ${2/3}或${2 div 3} ${2%3}或${2 mod 3} 关系运算符 有六个:==或eq、!=或ne、<或lt、>或gt、<=或le、>=或ge ${5==5} ${5 eq 5} ${5 != 5} ${5 ne 5} 逻辑运算符 有三个:&&或and、||或or、!或not
${A &&B} ${A and B} ${A || B} ${!A} ${not A} 其它运算符 有三个:Empty运算符、条件运算符、()运算符 ${empty https://www.360docs.net/doc/bd11420299.html,}
${3+9 } ${5==5 } ${empty a } EL隐式对象: 1、与范围有关的隐式对象。 ●pageScope使用范围:当前页面 ●requestScope使用范围:当前请求 ●sessionScope使用范围:当前会话 ●applicationScope使用范围:服务器启动到结束 例子: <% pageContext.setAttribute("key","b"); request.setAttribute("key","c"); session.setAttribute("key","d"); application.setAttribute("key","e"); %> ${key } ${requestScope.key } ${sessionScope.key }keil C 运算符和表达式
运算符和表达式 运算符就是完成某种特定运算的符号。运算符按其表达式中与运算符的关系可分为单目运算符,双目运算符和三目运算符。单目就是指需要有一个运算对象,双目就要求有两个运算对象,三目则要三个运算对象。表达式则是由运算及运算对象所组成的具有特定含义的式子。C 是一种表达式语言,表达式后面加“;”号就构成了一个表达式语句。 赋值运算符 对于“=”这个符号大家不会陌生的,在 C 中它的功能是给变量赋值,称之为赋值运算符。它的作用就是把数据赋给变量。如,x=10;由此可见利用赋值运算符将一个变量与一个表达式连接起来的式子为赋值表达式,在表达式后面加“;”便构成了赋值语句。使用“=”的赋值语句格式如下: 变量 = 表达式; 示例如下 a = 0xFF; //将常数十六进制数 FF 赋于变量 a b = c = 33; //同时赋值给变量 b,c d = e; //将变量 e 的值赋于变量 d f = a+b; //将变量 a+b的值赋于变量 f 由上面的例子可以知道赋值语句的意义就是先计算出“=”右边的表达式的值,然后将得到的值赋给左边的变量。 算术,增减量运算符 对于 a+b,a/b 这样的表达式大家都很熟悉,用在 C语言中,+,/,就是算术运算符。C51的算术运算符有如下几个,其中只有取正值和取负值运算符是单目运算符,其它则都是双运算符: + 加或取正值运算符 - 减或取负值运算符 * 乘运算符 / 除运算符 % 取余运算符 算术表达式的形式: 表达式 1 算术运算符表达式 2 如:a+b*(10-a), (x+9)/(y-a) 除法运算符和一般的算术运算规则有所不同,如是两浮点数相除,其结果为浮点数,如 10.0/20.0 所得值为 0.5,而两个整数相除时,所得值就是整数,如 7/3,值为 2。像别的语言一样 C 的运算符与有优先级和结合性,同样可用用括号“()”来改变优先级。这些和我们小时候学的数学几乎是一样的,也不必过多的说明了。 ++ 增量运算符 -- 减量运算符 这两个运算符是 C 语言中特有的一种运算符。在 VB,PASCAL 等都是没有的。作用就是对运算对象作加 1 和减1 运算。要注意的是运算对象在符号前或后,其含义都是不同的,虽然同是加1或减 1。如:I++,++I,I--,--I。 I++(或 I--)是先使用 I 的值,再执行 I+1(或 I-1) ++I(或--I)是先执行 I+1(或I-1),再使用I 的值。 增减量运算符只允许用于变量的运算中,不能用于常数或表达式。 关系运算符 对于关系运算符,在C中有六种关系运算符: >大于 <小于 >=大于等于 <=小于等于 ==等于
el表达式的基本语法
·el表达式的基本语法 ${el表达式} 1) 第一种:访问bean的属性 a、${https://www.360docs.net/doc/bd11420299.html,} jsp引擎会依次从pageContext、request、session、application查找绑定名为"user" 的对象,如果找到了就不再向下查找,否则,继续向下查找。找到后。调用该对象的getName()方法,并输出 其值;找不到,则输出""(空)。 b、${user["name"]},效果相同 "name"表示字符串 c、或者也可以使用${user[propname]},注意不带引号表示变量 d、此外[]里面还可以以0 1这样的数字下标,作用是输出数组里面的元素值。 2)第二种:获取请求参数值 a、${https://www.360docs.net/doc/bd11420299.html,ername} 等价于request.getAttribute("username"); b、${paramValues.interest} 等价于request.getAttributeValues("interest"); 3)第四种:计算一个表达式,将结果作为标签的属性值或者直接输出。 a、算术运算+ -* % / 但是要注意的是+号不能连接字符串 b、关系运算== != < > >= <= 可以使用对应的"eq" "nq" "lt" "gt" "le" "ge" c、逻辑运算 && || ! 可以使用and or not d、empty运算 判断一个字符串是否为空,集合内容是否为空,以及绑定的对象是否存在 ·5核心标签的使用 1)使用步骤 需要将jstl标准标签库相关的jar文件copy到WEB-INF 的lib目录下 jstl.jar java stantard taglib stantard.jar 2)在件商品文件当中,使用taglib指令导入标签。 3)使用标签 a、
JSP中的EL表达式介绍
JSP 中的 EL 表达式介绍
一、JSP EL 语言定义
EL 提供了在 JSP 脚本编制元素范围外使用运行时表达式的功 能。 脚本编制元素是指页面中能够用于在 JSP 文件中嵌入 Java 代码 的元素。它们通常用于对象操作以及执行那些影响所生成内容的计算。 JSP 2.0 将 EL 表达式添加为一种脚本编制元素。
二、JSP EL 简介 1、语法结构 ${expression} 2、[ ]与.运算符 EL 提供“.“和“[ ]“两种运算符来存取数据。 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数 字的符号,就一定要使用“[ ]“。例如: ${user.My-Name}应当改为${user["My-Name"] } 如果要动态取值时,就可以用“[ ]“来做,而“.“无法做到动态取值。 例如: ${https://www.360docs.net/doc/bd11420299.html,er[data]}中 data 是一个变量 3、变量 EL 存取变量数据的方法很简单,例如:${username}。它的意思是 取出某一范围中名称为 username 的变量。
因为我们并没有指定哪一个范围的 username,所以它会依序从 Pa ge、Request、Session、Application 范围查找。 假如途中找到 username,就直接回传,不再继续找下去,但是假 如全部的范围都没有找到时,就回传 null。 属性范围在 EL 中的名称 Page Request Session Application PageScope RequestScope SessionScope ApplicationScope
二、JSP EL 中的有效表达式 有效表达式可以包含文字、操作符、变量(对象引用)和函数调用。 我们将分别了解这些有效表达式中的每一种: 1、文字 JSP 表达式语言定义可在表达式中使用的以下文字:
文字 Boolean true 和 false
文字的值
Integer
与 Java 类似。可以包含任何正数或负数,例如 24、-45、 567 与 Java 类似。可以包含任何正的或负的浮点数,例如 -1.8E-45、4.567
Floating Point
算法与程序设计《运算符与表达式》教学案例
《运算符与表达式》教学案例 【教学课题】运算符与表达式 【适用年级】普通高中一年级 【所用教材】教科版《算法与程序设计》 【学生分析】本节课教学对象为高一学生,教学内容为程序设计的基础知识,教学方法类似于上节课“数据类型、常量和变量”,又有一定的数学知识作后盾,因此学习起来不会太困难。 【教材分析】运算符与表达式是第二章第二节第二课时的内容,现在把它调整为第三课时,而把本该是第四课的函数调整为第二课时,因为在书写表达式时涉及到函数。这部分内容仍为VB的基础知识,内容与数学知识仍有一定的相通。 【教学目的】1、知识和技能 (1)理解VB中表达式的概念。 (2)了解VB中各种运算符以及各种类型的表达式。 (3)记住运算符执行顺序。 2、过程和方法 引导学生积极思考和分析问题。 3、情感态度与价值观 培养学生严谨的思维习惯和团队协作精神。 【教学重点】VB表达式的书写 【教学难点】逻辑运算符的运算过程 【主要教法】讲授、演示、探究等方法 【主要学法】记忆、尝试、讨论 【教学用具】多媒体微机房 【教学过程】 一、创设情境,导入新课 1、老师出示一个式子:(-b+sqr(b^2-4*a*c))/(2*a),让学生说出这个式子由哪引些要素组成。 2、学生讨论得出:常量、变量、函数、运算符、圆括号组成。 3、教师告诉学生上面这个式子在VB中称为表达式。 二、合作讨论,学习新知 1、师生共同归纳总结“表达式”的概念:表达式是由常量、变量、函数、圆括号和运算符等按一定的规则组合成的式子。 2、你问我答学习“算术运算符和算术表达式”。 师:算术运算符中,哪些是数学课中没有学过的?现在明白了它们的含义了吗? 生:MOD和\,“MOD”是求余,“\”是带队整除。 师:在数学课中学过的算术运算符中,哪些写法和数学课上的写法不一样? 生:指数(^)和乘号(*)。 师:你能给算术表达式下个定义吗? 生:算术表达式是指由常量、变量、函数、圆括号和算术运算符等按一定的规则组合成的式子。 师:书写VB表达式必须满足下列规则:所有字符必须写在同一水平线上;乘号不能省略;只能用圆括号。根据以上规则请你把下面几个数学代数式写成VB表达式: ax2+bx+c sin(x) 64+|-5| 生:a*x^2+b*x+c sin(x*3.14/180) 64+abs(-5)
EL表达式教程
EL 全名为Expression Language EL 语法很简单,它最大的特点就是使用上很方便。接下来介绍EL主要的语法结构: ${https://www.360docs.net/doc/bd11420299.html,er.sex} 所有EL都是以${为起始、以}为结尾的。上述EL范例的意思是:从Session 的范围中,取得 用户的性别。假若依照之前JSP Scriptlet的写法如下: User user = (User)session.getAttribute("user"); String sex = user.getSex( ); 两者相比较之下,可以发现EL 的语法比传统JSP Scriptlet 更为方便、简洁。 一.与 [ ] 运算符 EL 提供 . 和 [ ] 两种运算符来导航数据。下列两者所代表的意思是一样的: ${https://www.360docs.net/doc/bd11420299.html,er.sex}等于${https://www.360docs.net/doc/bd11420299.html,er["sex"]} . 和 [ ] 也可以同时混合使用,如下: ${sessionScope.shoppingCart[0].price} 回传结果为shoppingCart中第一项物品的价格。 不过,以下两种情况,两者会有差异: (1) 当要存取的属性名称中包含一些特殊字符,如. 或–等并非字母或数字的符号,就一定要使用 [ ],例如:${user.My-Name } 上述是不正确的方式,应当改为:${user["My-Name"] } (2) 我们来考虑下列情况: ${https://www.360docs.net/doc/bd11420299.html,er[data]} 此时,data 是一个变量,假若data的值为"sex"时,那上述的例子等于${https://www.360docs.net/doc/bd11420299.html,er.sex}; 假若data 的值为"name"时,它就等于${https://www.360docs.net/doc/bd11420299.html,}。因此,如果要动态取值时,就可以用上述的方法来做,但. 无法做到动态取值。 二.EL 变量 EL 存取变量数据的方法很简单,例如:${username}。它的意思是取出某一范围中名称为username的变量。因为我们并没有指定哪一个范围的username,所以它的默认值会先从Page 范围找,假如找不到,再依序到Request、Session、Application范围。假如途中找到username,就直接回传,不再继续找下去,但是假如全部的范围都没有找到时,就回传null,当然EL表达式还会做出优化,页面上显示空白,而不是打印输出NULL。
EL表达式、语法及运算
EL表达式 一、EL表达式的概念 EL表达式是为了便于获取数据而定义的一种语言,JSP 2.0之后才成为一种标准。下面的示例是一个简单的EL表达式: <%@ page contentType="text/html; charset=UTF-8"%>
${stuno + 1}二、EL表达式的基本语法 EL表达式的出现让Web的显示层发生了大的变革,EL表达式用于获取数据,在JSP 2.0之后成为一种标准,是由JSP 标准标签库专家组和JSP 2.0 专家组开发。 EL表达式的语法格式:${标识符}(必须以“${”开始,以“}”结束“标示符”具体表达式的内容) 在JSP页面中使用的形式,通知JSP引擎调用pageContext.findAttribute()方法,以标识符为关键字从各个域对象中获取对象。如果域对象中不存在标识符所对应的对象,则返回结果为“”(注意,不是null)。 三、语法结构 1、JSP EL用于以下情形 静态文本 标准标签和自定义标签(可以作为元素的值,也可以在自定义或者标准动作元素的内容中使用) EL不能在脚本元素中使用 2、[]与.运算符
EL提供(.)和([])两种运算符来存取数据,即使用点运算符(.)和方括号运算符([])。 点运算符和方括号运算符可以实现某种程度的互换,如${https://www.360docs.net/doc/bd11420299.html,}等价于${student [“name”]}。 当要存取的属性名称中包含一些特殊字符,如.或?等并非字母或数字的符号时,就一定要使用[]。例如${https://www.360docs.net/doc/bd11420299.html, }应当改为${student[“name”] }。 如果要动态取值,就可以用[]来做,而.无法做到动态取值。例如${sessionScope.student[data]}中data 是一个变量。 3、变量 EL存取变量时间的方法很简单,例如${username}。它的意思是取出某一范围中名称为username 的变量。 属性范围在EL中的名称如表所示: 4、文字常量 一个EL表达式包含变量、文字常量、操作符。文字常量主要包括字符串、数字和布尔值、还有NULL,其中 字符串是由任何由单引号或双引号引起来的一串字符。 数字常量包括整型、浮点型,整型表示十进制、十六进制和八进制类型的值,浮点型与Java类似,可以包含任何正的或者负的浮点数。 布尔型包括true和false。 ${true} ${10} ${10.5f} ${“hello”} ${null} 5、操作符 EL表达式的操作符主要有
EL表达式常用标签
EL表达式和常用标签 1.el表达式的作用,什么时候使用el表达式 El表达式是为了简化jsp页面中的java代码,当在jsp页面中需要使用java代码的时候,可以使用el表达式来替换java代码 2.语法规则${ } 3.El表达式在request,session,application中的自动匹配范围最小的那一个 例如: request.setAttribute("name","mzl"); session.setAttribute("name","liu"); application.setAttribute("name","huyahui"); El: 获得attribute里面的值${name} 4.获取请求头的信息 获得全部请求信息${header }
获得cookie ${header.cookie }
获得cookie的第二种方式${header['cookie'] } 5.获取请求参数 6.获取作用于的数据 request.setAttribute("name","mzl"); session.setAttribute("name","liu"); application.setAttribute("name","huyahui"); El 获得request里面的值${https://www.360docs.net/doc/bd11420299.html,}
获得session里面的值${https://www.360docs.net/doc/bd11420299.html,}
获得application里面的值${https://www.360docs.net/doc/bd11420299.html,}
7.获取列表的数据 ArrayList list = new ArrayList(); list.add("zcxv"); list.add("adf"); list.add("asdf"); request.setAttribute("list",list); Map map = new HashMap(); map.put("01","adf"); map.put("02","zcv"); request.setAttribute("map",map); El 下标的方式进行访问集合${list[0]}
${list[1]}
${list[2]}
访问map里面的值:${map['01'] }
${map['02'] }
8.获取pojo对象的值 User user = new User(01,"123"); request.setAttribute("user",user); El 访问pojo里面的值
${user.id }
${https://www.360docs.net/doc/bd11420299.html, } 9.El表达式能够进行简单的计算 10.Jsp常用的标签库 动态循环输出数据到页面 User user = null; ArrayList list = new ArrayList(); for(int i=1;i<10;i++){ user = new User(i, "user" + i); list.add(user); } request.setAttribute("users",list);
EL表达式 (详解)
EL表达式 1 EL简介 1 语法结构 ${expression} 2 [] .运算符 EL 提供.和[]两种运算符来 取数据 当要 取的属性 称中包含一些特殊 符 如.或?等并非 母或数 的符号 就一定要使用[] 例如 ${user.My-Name}应当改 ${user["My-Name"] } 如果要动态取值时 就可 用[]来做 而.无法做到动态取值 例如 ${https://www.360docs.net/doc/bd11420299.html,er[data]}中data 是一个变量 3 变量 EL 取变量数据的方法很简单 例如 ${username} 它的意思是取出某一范围中 称 username的变量 因 们并没有指定哪一个范围的username 所 它会依序从Page Request Session Application范围查找 假如途中找到username 就直接回传 再继续找 去 但是假如全部的范围都没有找到时 就回传null 属性范围在EL中的 称 Page PageScope Request RequestScope Session SessionScope Application ApplicationScope 4) 1--EL表达式用${}表示,可用在所有的HTML和JSP标签中作用是 替JSP页面中复杂的JAVA 码. 2--EL表达式可操作常量变量和隐式对象. 最常用的隐式对象有${param}和${paramValues}. ${param}表示返回请求参数中单个 符串的值. ${paramValues}表示返回请求参数的一组
值.pageScope表示页面范围的变量.requestScope表示请求对象的变量. sessionScope表示会话 范围内的变量.applicationScope表示应用范围的变量. 3 --<%@ page isELIgnored="true"%> 表示是否禁用EL语言,TRUE表示禁 止.FALSE表示 禁 止.JSP2.0中默认的启用EL语言. 4-- EL语言可显示逻辑表达式如${true and false}结果是false 关系表达式如${5>6} 结 果是false 算术表达式如${5+5} 结果是10 5--EL中的变量搜索范围是:page request session application 点运算符(.)和"[ ]"都是 表示获取变量的值. 别是[ ]可 显示非词类的变量 2 EL隐含对象 1) 范围有关的隐含对象 范围有关的EL 隐含对象包含 四个 pageScope requestScope sessionScope 和 applicationScope 它们基本 就和JSP的pageContext request session和application一样 在EL中 这四个隐含对象只能用来取得范围属性值 getAttribute(String name) 能取得 他相关信息 例如 们要取得session中储 一个属性username的值 可 利用 列方法 session.getAttribute("username") 取得username的值 在EL中则使用 列方法 ${https://www.360docs.net/doc/bd11420299.html,ername} 2) 输入有关的隐含对象 输入有关的隐含对象有两个 param和paramValues 它们是EL中比较特别的隐含对象 例如 们要取得用户的请求参数时 可 利用 列方法 request.getParameter(String name) request.getParameterValues(String name) 在EL中则可 使用param和paramValues两者来取得数据 ${https://www.360docs.net/doc/bd11420299.html,} ${https://www.360docs.net/doc/bd11420299.html,}