JSTL主要提供了5大类标签库:
1.核心标签库:为日常任务提供通用支持,如显示和设置变量,重复使用一组项目,测试条件以及其他操作(如导入和重定向web页面等).
2.国际化(I18N)标签库:支持多种语言的引用程序.
3.SQL标签库:对访问和修改数据库提供标准化支持.
4.XML标签库:对XML文件处理和操作提供支持,包括XML节点的解析,迭代,基于XML数据的条件评估以及可扩展样式语言转换(Extensible Style Language Transformations , XSLT)的执行.
5.函数标签库:通过在EL表达式中调用函数标签库中的函数来实现特定的操作,例如: ${fn:contains(sring,substring)},其功能是判断string字符串中是否包含substring字符串.
核心标签库
核心标签库包括:out , set , remove , catch , if , choose , when和URL等.
表达式操作标签:包括:out , set , remove , catch.
out标签:
核心标签库中最为基本的标签就是,他可以在页面中显示一个字符串或者一个EL表达式的值,其功能与JSP中的<%=表达式%>类似
使用格式如下:
这个标签还可以有一个体,如下:
defalut value
这表示当value属性指定的object值为null时,就会显示体中指定的值,也就是default value的值,体中也可以是jsp代码.
中各属性的说明如下:
1.value :可以指定一个字符串作为输出内容,也可以指定为EL表达式,例如:${3+5}.
2.escapeXml :类型为boolean ,确定, < , > , & , ‘ , “等字符在结构的字符串中是否被转换成字符串实体代码,默认值是true(就是是否按html中的样式进行输出,设置true就是按照字符串原样进行输出,false就是按照html标识符进行输出)
3.default value :可以是字符串,也可以是一个EL表达式或者jsp表达式,如果属性(value)指定的表达式或者对象为null,那么将输出这个defalut value部分的值.
set标签:
set标签用来在某个范围(request,session或者application)内设置值,或者设置某个对象的属性值.
Set标签使用格式如下:
1.使用value属性在一个特定的范围内指定某个变量的值,其使用格式如下:
2.当使用value属性在一个特定范围内指定某各变量的值时,也可以包括一个体,他的作用与out标签体的作用一样,即value指定的值为null时,默认使用体中指定的值,使用的格式如下:
default value
3.设置某一个特定对象属性的使用格式如下:
4.在设置某个特定对象的一个属性时,也可以使用一个体,并且指定默认的值,使用格式如下:
default value
该标签中的各属性说明如下:
1. value :该属性指定变量或者对象中某个属性的值,并且可以是一个表达式.
2. var :变量名称,value属性指定的值就保存在这个变量中.
3. scope :设定变量的有效范围,如果不设置,默认为page.
4. target :设置属性的一个对象,它必须是JavaBean或者java.util.Map对象.
5. property :设置对象中的一个属性.
remove标签
remove标签一般和set标签配套使用,两者是相对应的,remove标签用于删除某个变量或者属性,使用格式如下:
Remove标签中使用的各属性说明如下:
1.scope :设定这个需要删除的变量的所在范围.
2.var :需要删除的变量或者对象属性的名称.
如果没有scope属性,即采用默认值,就相当于调用PageContext.removeAttribute(varName)方法,如果指定了这个变量所在的范围,那么系统会调用PageContext.removeAttribute(varName,scope)方法.
catch标签
catch标签的功能和java中的try{…}catch{…}语句的功能很相似,它用于捕获嵌入到其中间语句抛出的异常,这个标签的使用格式如下:
相关操作语句
--如果操作语句中出现异常,则catch会将异常保存在varName变量中.
流程控制标签:包括: if , choose , when , otherwise等.
if标签
这个标签作用与java中的if语句作用相同,用于判断条件语句,主要的使用格式如下
1.在体中不包括体的使用格式:
2.当体中包括体时,使用格式如下:
body content
标签中使用的属性说明:
test :判断条件的表达式,返回类型为true或者false;(也就是if的条件)
var :这个变量用于保存test条件表达式判断所返回的true或者false值
(if条件执行后所得到的boolean值将要保存在var变量中).
scope :指定var变量所在的有效范围.
choose , when , otherwise标签
这些标签相当于java中的switch , case , default条件,使用实例如下:
运行jsp页面后,输出admin
forEach迭代标签
该标签用来对一个collection集合中的一系列对象进行迭代输出,并且可以指定迭代次数,一般的使用格式如下:
Body content
这个标签使用的属性描述如下:
1.var :也就是保存在collection集合类中的对象名称.
2.items :将要迭代的集合类名.
3.varStatus :存储迭代的状态信息,可以访问到迭代自身的信息.
4.begin :如果指定了begin值,就表示从items[begin]开始迭代;如果没有指定begin值,则从集合的第一个值开始迭代.
5.end :表示迭代到集合的end位时结束,如果没有指定end值,则表示一直迭代到集合的最后一位.
6.step :指定迭代的步长.
例:
<%
String Items[] =new String[5];
Items[0]=”核心标签库”;
Items[1]=”国际化标签库”;
Items[2]=”SQL标签库”;
Items[3]=”XML标签库”;
Items[4]=”函数标签库”;
Request.setAttribute(“ItemName”,Items);
%>
的四种属性:
所在位置即索引:
总共已迭代的次数:
是否为第一个位置:
是否为最后一个位置:
代码说明: s.index用来获取计数器的值, s.count用来获取这是第几次循环, s.first用来获取是否是循环开始的第一次, s.last用来获取是否是循环的最后一次, first和last都返回boolean值.
forTokens标签
这个标签的作用和Java中的StringTokenizer类的作用非常相似,通过items属性来指定一个特定的字符串,然后通过delims属性指定一种分隔符(可以同时指定多个),通过指定的分隔符把items属性指定的字符串进行分组,与forEach标签一样,forTokens标签也可以指定begin和end以及step属性值.
使用格式如下:
Body content
标签中的各个属性描述如下:
1.var :进行迭代的参数名称.
2.items :指定的进行标签化的字符串.
3.varSatus :每次迭代的状态信息.
4.delims :使用这个属性指定的分隔符来分隔items指定的字符串.
5.begin :开始迭代的位置.
6.end :迭代结束的位置.
7.step :迭代的步长.
例:
使用” | ”作为分隔符
使用” | , ”作为分隔符
代码说明: delims=”|,” ,即使用”|”和”,”同时作为分隔符进行使用.如果需要更多的分隔符就是使用“|,./”在引号内输出.
URL相关的标签:
URL相关的标签主要用来将其他文件包含进来,或者提供页面之间的重定位以及URL地址的生成,参数的输出等.一般包括如下几个标签.
标签:与传统JSP页面重的标签类似.
标签:进行页面的重定位.
:主要用来重写URL地址.
:一般param标签会与其他标签一起配套使用,用于参数值的传递.
标签:
该标签用于把其他今天文件包含到该文件当中,它与传统的相类似,不同的是标签只能用来包括该应用中的其他文件,而还可以包含外部站点中的静态文件,所以它的功能更加强大.使用格式如下:
Body content
标签中的属性描述如下:
url:待引用静态文件的URL地址.
context:当采用相对路径访问一个外部静态文件时,这里的context指定这个外部文件的名称.
var:当使用字符串输出时,把输出的内容存储在这个var指定的变量中.
scope:指定var参数变量的有效范围.
varReader:这个属性指定的参数变量类型是Reader,可以用于读取文件的内容.
charEncoding:引入文件所采用的字符编码.
Import标签即可以采用相对路径也可以采用绝对路径来引用本地点中的任何静态文件,还可以使用绝对路径引用外部站点中的静态文,甚至可以是ftp站点中的文件,例如:http://www.163.com” />就是引用http://www.163.com站点的主页面.
可以把引用文件中的内容赋值给var属性指定的变量,然后进行读取,也可以赋值给varReader指定的Reader类型的变量,然后进行相应的读取.
有时引入的文件在本地显示会出现乱码,这时可以通过charEncoding来指定这些内容所采用的字符集编码.
和标签:
Redirect标签用来进行页面之间的重定向,它与传统JSP程序重的标签功能相类似,param标签是与redirect一起使用的,它用来进行参数值的传递,redirect标签的使用格式如下:
在redirect标签中指定param参数的使用格式如下:
例: [通过创建c_redirect1.jsp和c_redirect2.jsp两个文件说明]
c_redirect1.jsp文件内容如下:
c_redirect2.jsp文件内容如下:
userName=
c_redirect1.jsp页面文件内容不会显示,因为直接重定向到c_redirect2.jsp,重定向c_redirect2.jsp后,页面中输出userName=admin
标签:
这个标签主要用来重写url地址,使用格式如下:
当进行参数传递时,使用格式如下:
标签中使用的属性描述如下:
value:将要处理的URL地址.
context:当使用相对路径方法指定外部文件时,这个属性指定的是外在文件的名称.
var:给这个URL地址起一个标识.
Scope:规定这个var属性所指定变量的有效范围.
创建一个c_url.jsp,其源代码如下:
<%@ taglib prefix=”c” uri=”http://java.sun.com/jsp/jstl/core” %>
代码说明: url标签可以指定一个变量(var属性指定)来把url地址保存,并且可以指定这个变量的有效范围为session ,所以当需要用到这个url地址时,就可以使用session.getAttribute(varName)方法来获取这个地址,所以一般需要重复使用同一个url地址才会使用标签的功能.
PPT https://ptteng.github.io/PPT/PPT-java/java%20task2_szmc.html#/