《JSTL与EL表达式.ppt》由会员分享,可在线阅读,更多相关《JSTL与EL表达式.ppt(29页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第第10章章JSTL与与EL表达式表达式10.1 概述概述 在在在在JSPJSP页面中,一些逻辑内容需要使用大量页面中,一些逻辑内容需要使用大量页面中,一些逻辑内容需要使用大量页面中,一些逻辑内容需要使用大量的的的的JavaJava表达式来实现,这就使得表达式来实现,这就使得表达式来实现,这就使得表达式来实现,这就使得JSPJSP页面显得很页面显得很页面显得很页面显得很混乱、很复杂。使用自定义标记是一种很好的降混乱、很复杂。使用自定义标记是一种很好的降混乱、很复杂。使用自定义标记是一种很好的降混乱、很复杂。使用自定义标记是一种很好的降低复杂度的途径,但是,自定义标记却很容易造低复杂度的途径,但
2、是,自定义标记却很容易造低复杂度的途径,但是,自定义标记却很容易造低复杂度的途径,但是,自定义标记却很容易造成重复定义和非标准的实现。鉴于此,成重复定义和非标准的实现。鉴于此,成重复定义和非标准的实现。鉴于此,成重复定义和非标准的实现。鉴于此,SunSun于于于于20022002年发布了年发布了年发布了年发布了JSTLJSTL(JSP Standard Tag JSP Standard Tag LibraryLibrary,JSPJSP标准标记库)标准标记库)标准标记库)标准标记库)。JSTLJSTL标签库有以下几个标签:标签库有以下几个标签:标签库有以下几个标签:标签库有以下几个标签:l l
3、核心标签库:包含核心标签库:包含核心标签库:包含核心标签库:包含WebWeb应用的常见工作。应用的常见工作。应用的常见工作。应用的常见工作。l l国际化标签库:用来格式化显示数据的工作。国际化标签库:用来格式化显示数据的工作。国际化标签库:用来格式化显示数据的工作。国际化标签库:用来格式化显示数据的工作。l l数据库标签库:可以做访问数据库的工作。数据库标签库:可以做访问数据库的工作。数据库标签库:可以做访问数据库的工作。数据库标签库:可以做访问数据库的工作。l lXMLXML标签库:用来访问标签库:用来访问标签库:用来访问标签库:用来访问XMLXML文件的工作,这是文件的工作,这是文件的工作
4、,这是文件的工作,这是JSTLJSTL标签库的一个特点。标签库的一个特点。标签库的一个特点。标签库的一个特点。l l函数标签库:用来读取已经定义的某个函数。函数标签库:用来读取已经定义的某个函数。函数标签库:用来读取已经定义的某个函数。函数标签库:用来读取已经定义的某个函数。此外,此外,此外,此外,JSTLJSTL还提供了还提供了还提供了还提供了ELEL表达式语言表达式语言表达式语言表达式语言(Expression LanguageExpression Language)来进行辅助的工作。)来进行辅助的工作。)来进行辅助的工作。)来进行辅助的工作。10.1 概述概述10.2 JSTL EL表达
5、式语言表达式语言 JSTL JSTL标签库由标签库和标签库由标签库和标签库由标签库和标签库由标签库和ELEL表达式语言两个部分表达式语言两个部分表达式语言两个部分表达式语言两个部分组成。组成。组成。组成。1 1、JSTL ELJSTL EL表达式语言简介表达式语言简介表达式语言简介表达式语言简介 ELEL是从是从是从是从JavaScriptJavaScript脚本语言得到启发的一种表脚本语言得到启发的一种表脚本语言得到启发的一种表脚本语言得到启发的一种表达式语言,它借鉴了达式语言,它借鉴了达式语言,它借鉴了达式语言,它借鉴了JavaScriptJavaScript多类型转换无关性多类型转换无关
6、性多类型转换无关性多类型转换无关性的特点的特点的特点的特点。在使用在使用在使用在使用ELEL从从从从领域中领域中领域中领域中得到参数时可以自动转换类型,得到参数时可以自动转换类型,得到参数时可以自动转换类型,得到参数时可以自动转换类型,因此对于类型的限制更加宽松。因此对于类型的限制更加宽松。因此对于类型的限制更加宽松。因此对于类型的限制更加宽松。ELEL就将用户从这种就将用户从这种就将用户从这种就将用户从这种类型转换的繁琐工作脱离出来,允许用户直接类型转换的繁琐工作脱离出来,允许用户直接类型转换的繁琐工作脱离出来,允许用户直接类型转换的繁琐工作脱离出来,允许用户直接使用使用使用使用ELEL表达
7、式取得值,表达式取得值,表达式取得值,表达式取得值,而不用关心它是什么类型。而不用关心它是什么类型。而不用关心它是什么类型。而不用关心它是什么类型。例如:例如:例如:例如:first.jspfirst.jsp%page contentType=text/html;charset=UTF-8%num1:input type=text num1:name=sampleValue 10.2 JSTL EL表达式语言表达式语言 例:简单例:简单例:简单例:简单ELEL表达式表达式表达式表达式second.jspsecond.jsp%page contentType=text/html;charset=
8、UTF-8%String s=%$param.$param.sampleValue+1sampleValue+1 ELEL表达式必须以表达式必须以表达式必须以表达式必须以“$XXX$XXX”来来来来表示,其中表示,其中表示,其中表示,其中“XXX”XXX”部分就是具部分就是具部分就是具部分就是具体表达式内容。体表达式内容。体表达式内容。体表达式内容。10.2 JSTL EL表达式语言表达式语言 2 2、ELEL表达式的默认变量表达式的默认变量表达式的默认变量表达式的默认变量 一个一个一个一个ELEL表达式包含变量和操作符两个内容。任表达式包含变量和操作符两个内容。任表达式包含变量和操作符两个内
9、容。任表达式包含变量和操作符两个内容。任何存在于何存在于何存在于何存在于JSPJSP领域的领域的领域的领域的JavaBeanJavaBean都可以被转化成都可以被转化成都可以被转化成都可以被转化成ELEL表达式来使用,它所包含的默认变量如下:表达式来使用,它所包含的默认变量如下:表达式来使用,它所包含的默认变量如下:表达式来使用,它所包含的默认变量如下:(1 1)默认变量)默认变量)默认变量)默认变量pageScopepageScope、requestScoperequestScope、sessionScopesessionScope、applicationScopeapplicationSc
10、ope 例:使用例:使用例:使用例:使用requestScoperequestScope变量的变量的变量的变量的ELEL表达式表达式表达式表达式%$requestScope.sampleValue$requestScope.sampleValue10.2 JSTL EL表达式语言表达式语言(2 2)默认变量)默认变量)默认变量)默认变量paramparam、paramValuesparamValues 这两个默认变量包含请求参数的集合,这两个默认变量包含请求参数的集合,这两个默认变量包含请求参数的集合,这两个默认变量包含请求参数的集合,paramparam表明请求包表明请求包表明请求包表明请求
11、包含的参数为单一控件,含的参数为单一控件,含的参数为单一控件,含的参数为单一控件,paramValuesparamValues表明请求包含的参数为表明请求包含的参数为表明请求包含的参数为表明请求包含的参数为控件数组。控件数组。控件数组。控件数组。input type=text name=sampleValue value=10 input type=text name=sampleValue value=11 input type=text value=SingleValue 10.2 JSTL EL表达式语言表达式语言 通过递交将请求参数传送到通过递交将请求参数传送到通过递交将请求参数传送到
12、通过递交将请求参数传送到SampleJsp.jspSampleJsp.jsp。%page contentType=text/html;8%$paramValues.sampleValue1$paramValues.sampleValue1$param.sampleSingleValue$param.sampleSingleValue 控件数组参数的控件数组参数的控件数组参数的控件数组参数的ELEL表达式使用表达式使用表达式使用表达式使用“”来指定数组来指定数组来指定数组来指定数组下标。下标。下标。下标。10.2 JSTL EL表达式语言表达式语言(3 3)默认变量)默认变量)默认变量)默认变量
13、headerheader、headerValuesheaderValues 这两个默认变量包含请求参数头部信息的集合,这两个默认变量包含请求参数头部信息的集合,这两个默认变量包含请求参数头部信息的集合,这两个默认变量包含请求参数头部信息的集合,headerheader变量表示单一头部信息,变量表示单一头部信息,变量表示单一头部信息,变量表示单一头部信息,headerValuesheaderValues则表示数组型的头部信息。则表示数组型的头部信息。则表示数组型的头部信息。则表示数组型的头部信息。(4 4)默认变量)默认变量)默认变量)默认变量cookiecookie 包含所有请求的包含所有请求
14、的包含所有请求的包含所有请求的cookiecookie集合,集合中的每个集合,集合中的每个集合,集合中的每个集合,集合中的每个对象对应。对象对应。对象对应。对象对应。(5 5)默认变量)默认变量)默认变量)默认变量initParaminitParam 包含所有应用程序初始化参数的集合。包含所有应用程序初始化参数的集合。包含所有应用程序初始化参数的集合。包含所有应用程序初始化参数的集合。10.2 JSTL EL表达式语言表达式语言 (6 6)默认变量)默认变量)默认变量)默认变量pageContextpageContext 等价于等价于等价于等价于pagepage环境类的实例,用来提供访问不同环
15、境类的实例,用来提供访问不同环境类的实例,用来提供访问不同环境类的实例,用来提供访问不同的请求参数。的请求参数。的请求参数。的请求参数。1111个默认变量几乎包含了个默认变量几乎包含了个默认变量几乎包含了个默认变量几乎包含了WebWeb应用的所有基本应用的所有基本应用的所有基本应用的所有基本操作,若一个表达式不使用这些变量而直接使用参操作,若一个表达式不使用这些变量而直接使用参操作,若一个表达式不使用这些变量而直接使用参操作,若一个表达式不使用这些变量而直接使用参数名,那么就数名,那么就数名,那么就数名,那么就采用就近原则。采用就近原则。采用就近原则。采用就近原则。该表达式将使用最近该表达式将
16、使用最近该表达式将使用最近该表达式将使用最近取得的参数值。取得的参数值。取得的参数值。取得的参数值。10.2 JSTL EL表达式语言表达式语言 3 3、ELEL表达式的操作符表达式的操作符表达式的操作符表达式的操作符 ELEL表达式中还有许多操作符可以帮助完成各种表达式中还有许多操作符可以帮助完成各种表达式中还有许多操作符可以帮助完成各种表达式中还有许多操作符可以帮助完成各种所需的操作。所需的操作。所需的操作。所需的操作。(1 1)算术运算符:)算术运算符:)算术运算符:)算术运算符:+、-、*、/或或或或 divdiv、%或或或或 modmod (2 2)关系运算符:)关系运算符:)关系运
17、算符:)关系运算符:=或或或或 eqeq、!=!=或或或或 nene、或或或或 gtgt、=或或或或 gege (3 3)逻辑运算符:)逻辑运算符:)逻辑运算符:)逻辑运算符:&或或或或 andand、|或或或或 oror、!或或或或 notnot (4 4)其它运算符:)其它运算符:)其它运算符:)其它运算符:?:?:、emptyempty、func(args)func(args)10.2 JSTL EL表达式语言表达式语言$pageScope.sampleValue+12$pageScope.sampleValue+12$(pageScope.sampleValue+12)/3$(page
18、Scope.sampleValue+12)/3$(pageScope.sampleValue+12)$(pageScope.sampleValue+12)/3=4/3=4$(pageScope.sampleValue+12)$(pageScope.sampleValue+12)/3=5/3=5 input type=text name=sample1 +10$not empty pageScope.sampleValue$not empty pageScope.sampleValue 10.2 JSTL EL表达式语言表达式语言 标签库标签库URIURI前缀前缀前缀前缀CoreCorehttp
19、:/ cXML processingXML processinghttp:/ xI18N formattingI18N formattinghttp:/ accessDatabase accesshttp:/ JSTL标签库介绍标签库介绍 在在在在JSTL1.1JSTL1.1中有以下这些标签库是被支持的:中有以下这些标签库是被支持的:中有以下这些标签库是被支持的:中有以下这些标签库是被支持的:例如:例如:例如:例如:%taglib%例:简单例:简单例:简单例:简单JSTLJSTL标签库示例标签库示例标签库示例标签库示例%page contentType=text/html;charset=UT
20、F-8%taglib%c:forEach step=1$i$i 10.3 JSTL标签库介绍标签库介绍 1 1、JSTL CoreJSTL Core标签库标签库标签库标签库l l多用途核心标签:多用途核心标签:多用途核心标签:多用途核心标签:、。l l条件控制标签:条件控制标签:条件控制标签:条件控制标签:、。l l循环控制标签:循环控制标签:循环控制标签:循环控制标签:、。l lURLURL相关标签:相关标签:相关标签:相关标签:、。10.3 JSTL标签库介绍标签库介绍(1 1)标签用于在标签用于在标签用于在标签用于在JSPJSP中显示数据。中显示数据。中显示数据。中显示数据。c:out
21、value=$sessionScope.anyValue/(2 2)标签允许包含另一个标签允许包含另一个标签允许包含另一个标签允许包含另一个JSPJSP页面到本页页面到本页页面到本页页面到本页面来。面来。面来。面来。c:import url=/MyHtml.html var=thisPage/c:import url=/MyHtml.html var=thisPage/c:import var=thisPage/10.3 JSTL标签库介绍标签库介绍(3 3)标签用于得到一个标签用于得到一个标签用于得到一个标签用于得到一个URLURL地址。地址。地址。地址。c:url value=/MyHtm
22、l.html var=urlPage/link link(4 4)用于页面的重定向用于页面的重定向用于页面的重定向用于页面的重定向 该标签的作用该标签的作用该标签的作用该标签的作用相当于相当于相当于相当于response.sendRedirectresponse.sendRedirect方法的工作。方法的工作。方法的工作。方法的工作。(5 5)标签用于包含传递参数的标签用于包含传递参数的标签用于包含传递参数的标签用于包含传递参数的 c:param name=userName /10.3 JSTL标签库介绍标签库介绍 2 2、Database accessDatabase access标签库标签
23、库标签库标签库 Database accessDatabase access标签库中的标签用来提供标签库中的标签用来提供标签库中的标签用来提供标签库中的标签用来提供在在在在JSPJSP页面中可以与数据库进行交互的功能,主要有页面中可以与数据库进行交互的功能,主要有页面中可以与数据库进行交互的功能,主要有页面中可以与数据库进行交互的功能,主要有6 6组标签来进行工作。组标签来进行工作。组标签来进行工作。组标签来进行工作。(1 1)用于设置与数据库连接的)用于设置与数据库连接的)用于设置与数据库连接的)用于设置与数据库连接的标签标签标签标签 sql:setDataSource /10.3 JSTL
24、标签库介绍标签库介绍(2 2)用于查询的)用于查询的)用于查询的)用于查询的标签标签标签标签 sql:query=$dataSrc select*from table1 select*from table1 查询的结果将保存到变量查询的结果将保存到变量查询的结果将保存到变量查询的结果将保存到变量“queryResultsqueryResults”中,中,中,中,保存的结果是类型的实例。保存的结果是类型的实例。保存的结果是类型的实例。保存的结果是类型的实例。10.3 JSTL标签库介绍标签库介绍 要取得结果集中的数据可以使用要取得结果集中的数据可以使用要取得结果集中的数据可以使用要取得结果集中的
25、数据可以使用循环来进行。循环来进行。循环来进行。循环来进行。c:forEach var=row$row.userName$row.userName$row.passWord$row.passWord 10.3 JSTL标签库介绍标签库介绍(3 3)用于更新的)用于更新的)用于更新的)用于更新的标签标签标签标签 标签用于更新数据库,它的标签体内可以标签用于更新数据库,它的标签体内可以标签用于更新数据库,它的标签体内可以标签用于更新数据库,它的标签体内可以是一句更新的是一句更新的是一句更新的是一句更新的SQLSQL语句。其使用和语句。其使用和语句。其使用和语句。其使用和标签没有什么标签没有什么标签
26、没有什么标签没有什么不同。不同。不同。不同。(4 4)、标签标签标签标签 这两个标签用于向这两个标签用于向这两个标签用于向这两个标签用于向SQLSQL语句提供参数,就好像程序中语句提供参数,就好像程序中语句提供参数,就好像程序中语句提供参数,就好像程序中预处理预处理预处理预处理SQLSQL的的的的“?”一样一样一样一样。c:set var=vote value=$rs.rows0/sql:query var=rs dataSource=$dataSource select*from tb_voteitem where id=?select*from tb_voteitem where id=?
27、sql:param /10.3 JSTL标签库介绍标签库介绍 4 4、fnfn标签库标签库标签库标签库 称呼称呼称呼称呼FunctionsFunctions标签库为标签库,倒不如称标签库为标签库,倒不如称标签库为标签库,倒不如称标签库为标签库,倒不如称呼其为函数库来得更容易理解些。因为呼其为函数库来得更容易理解些。因为呼其为函数库来得更容易理解些。因为呼其为函数库来得更容易理解些。因为FunctionsFunctions标签库并没有提供传统的标签来为标签库并没有提供传统的标签来为标签库并没有提供传统的标签来为标签库并没有提供传统的标签来为JSPJSP页面的工作服务,而是被用于页面的工作服务,而
28、是被用于页面的工作服务,而是被用于页面的工作服务,而是被用于ELEL表达式语句表达式语句表达式语句表达式语句中。中。中。中。FunctionsFunctions标签库分为两大类,共标签库分为两大类,共标签库分为两大类,共标签库分为两大类,共1616个函个函个函个函数。数。数。数。10.3 JSTL标签库介绍标签库介绍(1 1)长度函数)长度函数)长度函数)长度函数fn:lengthfn:length函数函数函数函数%request.setAttribute(arrayList1,arrayList1);%$fn:length(requestScope.arrayList1)$fn:length
29、(requestScope.arrayList1)10.3 JSTL标签库介绍标签库介绍(2 2)判断函数)判断函数)判断函数)判断函数fn:containsfn:contains函数函数函数函数$fn:contains(ABC,a)$fn:contains(ABC,a)$fn:contains(ABC,A)$fn:contains(ABC,A)(3 3)fn:containsIgnoreCasefn:containsIgnoreCase函数函数函数函数$fn:containsIgnoreCase(ABC,$fn:containsIgnoreCase(ABC,a)a)$fn:containsI
30、gnoreCase(ABC,$fn:containsIgnoreCase(ABC,A)A)10.3 JSTL标签库介绍标签库介绍(4 4)词头判断函数)词头判断函数)词头判断函数)词头判断函数fn:startsWithfn:startsWith函数函数函数函数$fn:startsWith(ABC,ab)$fn:startsWith(ABC,ab)$fn:startsWith(ABC,AB)$fn:startsWith(ABC,AB)(5 5)词尾判断函数)词尾判断函数)词尾判断函数)词尾判断函数fn:endsWithfn:endsWith函数函数函数函数$fn:endsWith(ABC,bc)
31、$fn:endsWith(ABC,bc)$fn:endsWith(ABC,BC)$fn:endsWith(ABC,BC)(6 6)字符匹配函数)字符匹配函数)字符匹配函数)字符匹配函数fn:indexOffn:indexOf函数函数函数函数$fn:indexOf(ABCD,aBC)$fn:indexOf(ABCD,aBC)$fn:indexOf(ABCD,BC)$fn:indexOf(ABCD,BC)(7 7)分隔符函数)分隔符函数)分隔符函数)分隔符函数fn:joinfn:join函数函数函数函数%String stringArray=a,b,c;%request.setAttribute(
32、stringArray,stringArray);%$fn:join(requestScope.stringArray,;)$fn:join(requestScope.stringArray,;)br(8 8)替换函数)替换函数)替换函数)替换函数fn:replacefn:replace函数函数函数函数$fn:replace(ABC,A,B)$fn:replace(ABC,A,B)(9 9)分隔符转换数组函数)分隔符转换数组函数)分隔符转换数组函数)分隔符转换数组函数fn:splitfn:split函数函数函数函数$fn:split(A,B,C,)$fn:split(A,B,C,)(1010)
33、字符串截取函数)字符串截取函数)字符串截取函数)字符串截取函数fn:substringfn:substring函数函数函数函数$fn:substring(ABC,1,2)$fn:substring(ABC,1,2)(1111)起始到定位截取字符串函数)起始到定位截取字符串函数)起始到定位截取字符串函数)起始到定位截取字符串函数fn:substringBeforefn:substringBefore函数函数函数函数$fn:substring$fn:substringBeforeBefore(ABCD,BC)(ABCD,BC)(1212)小写转换函数)小写转换函数)小写转换函数)小写转换函数fn:toLowerCasefn:toLowerCase函数函数函数函数$fn:toLowerCase(ABCD)$fn:toLowerCase(ABCD)(1313)大写转换函数)大写转换函数)大写转换函数)大写转换函数fn:toUpperCasefn:toUpperCase函数函数函数函数$fn:toUpperCase(abcd)$fn:toUpperCase(abcd)(1414)空格删除函数)空格删除函数)空格删除函数)空格删除函数fn:trimfn:trim函数函数函数函数$fn:trim(AB C )D$fn:trim(AB C )D