一、参考链接
二、概述
JSLT标签库
全名为JavaServer Pages Standard Tag Library,它主要提供给Java Web开发人员一个标准通用的标签函数库。
Web程序员能够利用JSTL和EL来开发Web程序,取代传统直接在页面上嵌入Java程序(Scripting)的做法,以提高程序的阅读性、维护性和方便性
注意:
在eclipse中使用,需添加JSLT jar包:jstl.jar和standard.jar
三、<c:> 核心标签库
在JSP页面中要使用到核心标签,需要引入下面的语句:
JSTL 核心标签库(C标签)标签共有13个,功能上分为4类:
1.表达式控制标签:out、set、remove、catch
2.流程控制标签:if、choose、when、otherwise
3.循环标签:forEach、forTokens
4.URL操作标签:import、url、redirect
注意:
标签属性默认值不为空的,即使不声明,系统也会默认的给该标签添加上该属性,要想改变默认的属性对应的值,需声明属性并赋值
---------------------------------------------------<c:forEach></c:forEach>---------------------------------------------------
用途:对集合(Collection)进行遍历或迭代控制。
语法:
举例:
属性说明:
名称 | 说明 | EL | 类型 | 必须 | 默认值 |
var | 存放现在所指的成员 | N | String | N | 无 |
items | 被迭代的集合对象 | Y | Arrays,Collection,Iterator,Enumeration,Map,String | N | 无 |
varStatus | 存放现在所指的相关成员信息 | N | String | N | 无 |
begin | 指定迭代的开始位置 | Y | int | N | 0 |
end | 指定迭代的结束位置 | Y | int | N | 最后一个成员 |
step | 每次迭代的间隔数 | Y | int | N | 1 |
其中,varStatus属性提供了另外四个属性:index,count,fist和last,说明如下:
名称 | 类型 | 说明 |
index | number | 现在指到的成员的索引(索引号从"0"开始) |
count | number | 总共指到的成员的总和 |
first | boolean | 现在指到的成员是否为第一个 |
last | boolean | 现在指到的成员是否为最后一个 |
UpdateTime--2017年3月3日11:12:13
AddContent:新增<c:forTokens></c:forTokens>标签用法
-----------------------------------------<c:forTokens></c:forTokens>标签---------------------------------------------------
<c:forTokens>的用法和<c:forEach>用法一样,不同的就是:该标签比forEach标签多一个属性"delims",可以使用指定分隔符对字符串进行分割,可同时拥有多个分割字符,如:要按"|"和","进行分割,则写成delims="|,"
举例:
----------------------------------------------------<c:out></c:out>标签----------------------------------------------------
用途:主要用来显示数据的内容
语法1:
语法2:
举例:
属性说明:
名称 | 类型 | 说明 | 默认值 |
escapeXml | boolean | 将<、>、’、” 和 & 转换为<、>、'、" 和& | true |
default | Object | 如果value的值不存在时,会输出默认值 | 无 |
注意:
<c:out>默认会将"<"、">"、空格和"&"等转换为转义字符: <、>、'、" 和&。假若不想转换时,需要声明<c:out>的escapeXml属性为fasle
------------------------------------------------------------<c:set></c:set>标签--------------------------------------------
用途:主要用来将变量储存至JSP范围中或是JavaBean的属性中。
语法1:将value的值储存至范围为scope的 varName 变量之中
语法2:将本体内容的数据储存至范围为scope的 varName 变量之中
语法3:将 value的值储存至 target 对象的属性中
语法4:将本体内容的数据储存至target 对象的属性中
举例:
与之对应的获取方式:
EL表达式获取
小脚本获取
属性说明:
名称 | 说明 | EL | 类型 | 必须 | 默认值 |
value | 要被储存的值 | Y | Object | N | 无 |
var | 要存入的变量名称 | N | String | N | 无 |
scope | var变量的JSP范围 | N | String | N | page |
target | javaBean或Map对象 | Y | Object | N | 无 |
property | 指定target对象的属性 | Y | String | N | 无 |
------------------------------------------------<c:remove></c:remove>标签------------------------------------------------
用途:主要用来移除变量。
语法:
--------------------------------------------------<c:catch></c:catch>标签--------------------------------------------------
用途:主要用来处理产生错误的异常状况,并且将错误信息储存起来。
语法:
------------------------------------------------------<c:if></c:if>标签------------------------------------------------------
用途:和我们一般在程序中用的if一样
语法1:有本体内容(常用)
语法2:没有本体内容
举例:
CreateTime--2016年12月20日19:39:27
<c:if>标签的使用:
实现当"${model.FLEVEL > 3}"时,input文本框添加点击事件
注意:
<c:if>标签可以直接用在input的标签上,做好格式化即可
----------------------<c:choose><c:when><c:otherwise></c:choose></c:when></c:otherwise>标签----------------------
举例:
----------------------------------------------------<c:url></c:url>标签-----------------------------------------------------
用途:获取项目的根路径
语法:
<c:url value="路径"/>
注意:
value的值不能为空,且要以"/"开头
举例:
----------------------------------------------------------综合运用----------------------------------------------------------
UpdateTime--2017年1月12日16:10:42
综合运用一:<c:set>和<c:if>
本页面设值
优化:
本页面取值
四、<fmt:>格式化标签库
JSTL格式化标签又称为I18N标签库,主要用来编写国际化的WEB应用,使用此功能可以对一个特定的语言请求做出合适的处理
例如:
中国内地用户将显示简体中文,台湾地区则显示繁体中文,使用I18N格式化标签库还可以格式化数字和日期,例如同一数字或日趋,在不同国家可能有不同的格式,使用I18N格式标签库可以将数字和日期格式为当地的格式。
在JSP页面中要使用到格式化标签,需要引入下面的语句:
格式化标签
国际化标签
--------------------------------------<fmt:formatNumber></fmt:formatNumber>标签-------------------------------------
用途:将数字格式化成数字,货币,百分比。
此标签的属性:
属性名 | 作用 |
value | 要格式化的数字 |
type | 按照什么类型格式化,number(数字,默认值),currency(货币),percent(百分比) |
pattern | 自定义格式化样式 |
maxIntegerDigits | 整数部分最多显示多少位 |
mixIntegerDigits | 整数部分最少显示多少位 |
maxFractionDigits | 小数部分最多显示多少位 |
minFractionDigits | 小数部分最少显示多少位 |
var | 存储格式化后的结果 |
currencyCode | ISO-4721货币代码,只适用于按照货币格式化的数字 |
currencySymbol | 货币符号,如¥,只适用于按照货币格式化的数字 |
groupingUsed | 是否包含分隔符 |
scope | 存储的范围 |
注意:
格式化会遵循四舍五入的原则
举例:
---------------------------------------<fmt:parseNumber></fmt:parseNumber>标签--------------------------------------
用途:此标签用来将字符串类型的数字,货币或百分比转换成数字类型,和<fmt:formatNumber>标签的作用正好相反.
此标签的属性:
属性名 | 作用 |
value | 要转换的字符串 |
type | 指定要转换的字符串为什么类型,可取值:number,percent,currency |
pattern | 自定义格式化样式 |
parseLocale | 指定区域来转换字符串 |
IntegerOnly | 转换后的数字是否只显示整数部分 |
var | 存储转换后的结果 |
scope | 存储的范围 |
-----------------------------------------<fmt:formatDate></fmt:formatDate>标签---------------------------------------
用途:此标签可以将日期格式化
属性介绍:
属性名 | 作用 |
value | 用来格式化的时间或日期 |
type | 指定格式化的是日期还是时间,或者两者都是取值范围:date,time,both |
pattern | 自定义格式化样式 |
dateStyle | 日期的格式化样式,取值:default, short, medium, long, full |
timeStyle | 时间的格式化样式,取值:default, short, medium, long, full |
timeZone | 指定使用的时区,取值:EST, CST, MST, PST |
var | 存储格式化后的结果 |
scope | 指定存储的范围 |
注意:
1.type属性的可取值及意义:
date 只格式化日期部分
time 只格式化时间部分
both 格式化日期和时间
2.hh表示12小时制, HH代表24小时制
CreateTime--2016年9月29日10:22:11
用法:
第2步:获取系统当前时间
第3步:使用<fmt:formatDate/>标签进行格式化
<1>日期
<2>时间
<3>整合
------------------------------------------<fmt:parseDate></fmt:parseDate>标签-----------------------------------------
用途:将字符串类型的时间转换为日期类型
属性介绍:
属性名 | 作用 |
value | 用来格式化的时间或日期 |
type | 指定格式化的是日期还是时间,或者两者都是取值范围:date,time,both |
pattern | 自定义格式化样式 |
dateStyle | 日期的格式化样式,取值:default, short, medium, long, full |
timeStyle | 时间的格式化样式,取值:default, short, medium, long, full |
timeZone | 指定使用的时区,取值:EST, CST, MST, PST |
var | 存储格式化后的结果 |
scope | 指定存储的范围 |
---------------------------------------<fmt:setTimeZone></fmt:setTimeZone>标签--------------------------------------
用途:设定默认时区
属性介绍:
属性 | 作用 |
value | 设定时区,取值:EST,CST,MST,PST |
var | 存储设定的时区 |
scope | 存储的范围 |
-------------------------------------------<fmt:timeZone></fmt:timeZone>标签-----------------------------------------
用途:用来暂时设置时区
属性介绍:
属性 | 作用 |
value | 设定时区,取值:EST,CST,MST,PST |
注意:
此标签的时区只是部分,在标签开始至标签结束内有效,其它地方无效,其它地方还是会使用默认时区
五、<fn:> Function标签库
JSTL Functions 标签库中提供了一组常用的EL函数,主要用于处理字符串,在JSP中可以直接使用这些函数。
在JSP文件中使用Functions标签库,要先通过taglib指令引入该标签库:
-----------------------------------------------------fn:contains 函数-----------------------------------------------------
用途:判断在源字符串中是否包含目标字符串
语法:
fn:contains(String source,String target) -------boolean;
source -->指定源字符串;
target -->指定目标字符串;
返回类型为 boolean.
举例:
${fn:contains("Tomcat","cat")} -->结果:true
${fn:contains("Tomcat","CAT")} -->结果:false
------------------------------------------------fn:containsIgnoreCase 函数----------------------------------------------
用途:判断在源字符串中是否包含目标字符串,并且在判断时忽略大小写
语法:
fn: containsIgnoreCase (String source,String target) -------boolean;
source -->指定源字符串;
target -->指定目标字符串;
返回类型为 boolean.
举例:
${fn:containsIgnoreCase("Tomcat","CAT")} -->结果:true
${fn:containsIgnoreCase("Tomcat","Mike")} -->结果:false
----------------------------------------------------fn:startsWith 函数---------------------------------------------------
用途:判断源字符串是否以指定的目标字符串开头
语法:
fn:startsWith(String source,String target) -------boolean;
source -->指定源字符串;
target -->指定目标字符串;
返回类型为 boolean.
举例:
${fn:startsWith("Tomcat","Tom")} -->结果:true
${fn:startsWith("Tomcat","Mike")} -->结果:false
-----------------------------------------------------fn:endsWith 函数---------------------------------------------------
用途:判断源字符串是否以指定的目标字符串结尾
语法:
fn:endsWith(String source,String target) -------boolean;
source -->指定源字符串;
target -->指定目标字符串;
返回类型为 boolean.
举例:
${fn:endsWith("Tomcat","cat")} -->结果:true
${fn:endsWith("Tomcat","Tom")} -->结果:false
----------------------------------------------------fn:indexOf 函数------------------------------------------------------
用途:在源字符串中查找目标字符串,并返回源字符串中最先与目标字符串匹配的第一个字符的索引,如果在源字 符串中不包含目标字符串,就返回 -1 ,源字符串中的第一个字符的索引为 0 。
语法:
fn:indexOf(String source,String target) -------int;
source -->指定源字符串;
target -->指定目标字符串;
返回类型为 int.
举例:
${fn:indexOf("Tomcat","cat")} -->结果: 3
${fn:indexOf("2211221","21")} -->结果: 1
${fn:indexOf("Tomcat","Mike")} -->结果:-1
-----------------------------------------------------fn:replace 函数-----------------------------------------------------
用途:把源字符串中的一部分替换为另外的字符串,并返回替换后的字符串。
语法:
fn:replace(String source,String before,String after) -------String;
source -->指定源字符串;
before -->指定源字符串中要被替换的子字符串;
after -->指定用于替换的子字符串
返回类型为 String.
举例:
${fn:replace("TomcAt","cAt","cat")} -->结果:"Tomcat"
${fn:replace("2008/1/9","/","-")} -->结果:"2008-1-9"
----------------------------------------------------fn:substring 函数---------------------------------------------------
用途:获取源字符串中的特定子字符串
语法:
fn:substring(String source,int beginIndex,int endIndex) -------String;
source -->指定源字符串;
beginIndex -->表示子字符串中的第一个字符在源字符串中的索引;
endIndex -->表示子字符串的最后一个字符在源字符串中的索引加 1;
返回类型为 String
注意:
1.源字符串中的第一个字符的索引为 0 ;
2.左包含,右不包含,即:[beginIndex,endIndex)
举例:
${fn:substring(row.FITEMNAME,0,10)} -->截取的是前10个字符,即[0,10)
${fn:substring("Tomcat",0,3)} -->结果:"Tom"
${fn:substring("Tomcat",3,6)} -->结果:"cat"
-------------------------------------------------fn:substringBefore 函数-----------------------------------------------
用途:获取源字符串中指定目标子字符串之前的子字符串
语法:
fn:substringBefore(String source,String target) -------String;
source -->指定源字符串;
target -->指定目标子字符串;
返回类型为 String
注意:
如果在源字符串中不包含特定子字符串,就返回空字符串。
举例:
${fn:substringBefore("Tomcat","cat")} -->结果:"Tom"
${fn:substringBefore("mydata.txt",".txt")} -->结果:"mydata"
--------------------------------------------------fn:substringAfter 函数-------------------------------------------------
用途:获取源字符串中指定目标子字符串之后的子字符串
语法:
fn:substringAfter(String source,String target) -------String;
source -->指定源字符串;
target -->指定目标子字符串;
返回类型为 String
注意:
如果在源字符串中不包含特定子字符串,就返回空字符串。
举例:
${fn:substringAfter("Tomcat","cat")} -->结果:""
${fn:substringAfter("mydata.txt","mydata.")} -->结果:"txt"
-------------------------------------------------------fn:split 函数------------------------------------------------------
用途:将源字符串拆分为一个字符串数组
语法:
fn:split(String source,String delimiter) -------String[];
source -->指定源字符串;
delimiter -->指定用于拆分源字符串的分隔符;
返回类型为 String[]
注意:
如果在源字符串中不包含delimiter参数指定的分隔符,或 delimiter参数为 null ,那么在返回的字符串数组中只有一个元素,为源字符串。
输出结果为:
www
mywebsite
org
举例2:
<c:set value="${fn:split("www.mywebsite.org","-")}" var="strs"/>
${strs[0]}
输出结果为:
www.mywebsite.org
-------------------------------------------------------fn:join 函数-----------------------------------------------------
用途:将源字符串数组中的所有字符串连接为一个字符串
语法:
fn:join(String source[],String separator) -------String;
source[] -->指定源字符串;
separator -->指定用于连接源字符串数组中的各个字符串的分隔符;
返回类型为 String
举例:
<c:set value="{"www","mywebsite","org"}" var="strs"/>
${fn:join(strs,".")}
输出结果为:
www.mywebsite.org
--------------------------------------------------fn:toLowerCase 函数-------------------------------------------------
用途:将源字符串中的所有字符改为小写
语法:
fn:toLowerCase(String source) -------String;
source -->指定源字符串;
返回类型为 String
举例:
fn:toLowerCase("TomCat") -->结果:"tomcat"
--------------------------------------------------fn:toUpperCase 函数-------------------------------------------------
用途:将源字符串中的所有字符改为大写
语法:
fn:toUpperCase(String source) -------String;
source -->指定源字符串;
返回类型为 String
举例:
fn:toLowerCase("TomCat") -->结果:"TOMCAT"
----------------------------------------------------------fn:trim 函数--------------------------------------------------
用途:将源字符串中的开头和末尾的空格删除
语法:
fn:trim(String source) -------String;
source -->指定源字符串;
返回类型为 String
举例:
fn:trim(" Tom Cat ") -->结果:"Tom Cat"
---------------------------------------------------fn:escapeXml 函数--------------------------------------------------
用途:将源字符串中的字符"<"、">"、空格和"&"等转换为转义字符,fn:escapeXml 函数的行为与 <c:out> 标签的 escapeXml 属性为 true 时的转换行为相同
语法:
fn:escapeXml(String source) -------String;
source -->指定源字符串;
返回类型为 String
举例:
${fn:escapeXml("<b>表示粗体字</b>")} -->结果:<b>表示粗体字</b>
<c:out value="<b>表示粗体字</b>"></c:out> -->结果:<b>表示粗体字</b>
${"<b>表示粗体字</b>"} -->结果:<b>表示粗体字</b>
-----------------------------------------------------fn:length 函数----------------------------------------------------
用途:返回字符串中的字符的个数,或者集合和数组的元素的个数
语法:
fn:escapeXml(source) -------int;
source -->字符串、集合或者数组;
返回类型为 int
举例:
数组长度: ${fn:length(array)}
集合长度: ${fn:length(list)}
字符串长度: ${fn:length("Tomcat")}
小结:
fn:containsIgnoreCase 函数 : 用于判断在源字符串中是否包含目标字符串 , 并且在判断时忽略大小写。
fn:startsWith 函数 : 用于判断源字符串是否以指定的目标字符串开头。
fn: endsWith 函数: 用于判断源字符串是否以指定的目标字符串结尾。
fn:indexOf 函数: 用于在源字符串中查找目标字符串,并返回源字符串中最先与目标字符串匹配的第一个字符的索引。
fn:replace 函数: 用于把源字符串中的一部分替换为另外的字符串,并返回替换后的字符串。
fn:substring 函数: 用于获取源字符串中的特定子字符串。
fn:substringBefore 函数: 用于获取源字符串中指定子字符串之前的子字符串。
fn: substringAfter 函数: 用于获取源字符串中指定子字符串之后的子字符串
fn:split 函数: 用于将源字符串拆分为一个字符串数组。
fn:join 函数: 用于将源字符串数组中的所有字符串连接为一个字符串。
fn:toLowerCase 函数: 用于将源字符串中的所有字符改为小写。
fn: toUpperCase 函数: 用于将源字符串中的所有字符改为大写。
fn:trim 函数: 用于将源字符串中的开头和末尾的空格删除。
fn:escapeXml 函数: 用于将源字符串中的字符"<"、">"、空格和"&"等转换为转义字符。
fn:length 函数: 用于返回字符串中的字符的个数,或者集合和数组的元素的个数
六、实际运用:
UpdateTime--2017年3月3日11:55:32
1.EL表达式获取得到的值:1,2,3,4,根据指定字符显示不同内容
方式一:使用${fn:contains(字符串,指定字符)}
UpdateTime--2017年3月8日21:46:39
方式二:使用<c:forTokens></c:forTokens>标签实现
方式三:使用${fn:split("字符串","分隔符")}
2021年11月25日16:43:56
其它案例
文本框
单选框
复选框
写在最后
哪位大佬如若发现文章存在纰漏之处或需要补充更多内容,欢迎留言!!!
作者:Marydon
















