最长使用的JTSTL 标签
一、核心标签:
核心标签是最常用的 JSTL标签也就是最常见的“C”标签,首先引用头文件:
<%@ taglib prefix=“c” uri=“http://java.sun.com/jsp/jstl/core” %>
<c:forEach> 循环遍历
</c:forEach>
<!-- 定义循环 -->
<c:forEach var="i" begin="1" end="5">
<!-- 输出循环 -->
Item <c:out value="${i}"/><p>
</c:forEach>
输出结果:
Item 1
Item 2
Item 3
Item 4
Item 5
<c:if> 与程序中用的if一样,没啥区别
<!-- 定义一个if判断 -->
<c:set var="salary" scope="session" value="4000"/>
<!-- 如果我的工资大于2000就进入判断 -->
<c:if test="${salary > 2000}">
<p>我的工资为: <c:out value="${salary}"/><p>
</c:if>
输出结果:
我的工资为: 4000
<c:choose> 与<c:when>和<c:otherwise>配合判断使用,与if差不多
<c:when> <c:choose>的子标签,用来判断条件是否成立
<c:otherwise> <c:choose>的子标签,接在<c:when>标签后,当所有<c:when>标签判断为false时被执行
<body>
<!-- 语法格式 -->
<c:choose>
<c:when test="条件">
...
</c:when>
<c:when test="条件">
...
</c:when>
...
...
<c:otherwise>
...
</c:otherwise>
</c:choose>
<c:set var="salary" scope="session" value="4000"/>
<p>你的工资为 : <c:out value="${salary}"/></p>
<c:choose>
<c:when test="${salary <= 0}">
太惨了
</c:when>
<c:when test="${salary > 1000}">
不错的薪水,还能生活。
</c:when>
<c:otherwise>
什么都没有。
</c:otherwise>
</c:choose>
</body>
<c:out> 用于在JSP中显示数据,作为输出使用
<c:set> 用于保存数据或定义变量
<c:param> 用来给包含或重定向的页面传递参数
<c:redirect> 重定向至一个新的URL.
<c:url> 使用可选的查询参数来创造一个URL
二、格式化标签:
格式化标签用来格式化并输出文本、日期、时间、数字:
<%@ taglib prefix=“fmt” uri=“http://java.sun.com/jsp/jstl/fmt” %>
fmt:formatNumber 使用指定的格式或精度格式化数字
<body>
<!-- 语法格式 -->
<fmt:formatNumber
value="要显示的值 "
type="选择输出的类型 "
pattern="指定自定义格式 "
currencyCode="货币码"
currencySymbol="货币符号"
groupingUsed="是否对数字分组"
maxIntegerDigits="整型数最大的位数"
minIntegerDigits="整型数最小的位数"
maxFractionDigits="小数点后最大的位数"
minFractionDigits="小数点后最小的位数"
var="变量名"
scope="var属性的作用域"/>
<c:set var="balance" value="120000.2309" />
<p>格式化数字 (1): <fmt:formatNumber value="${balance}"
type="currency"/></p>
<p>格式化数字 (2): <fmt:formatNumber type="number"
maxIntegerDigits="3" value="${balance}" /></p>
<p>格式化数字 (3): <fmt:formatNumber type="number"
maxFractionDigits="3" value="${balance}" /></p>
<p>格式化数字 (4): <fmt:formatNumber type="number"
groupingUsed="false" value="${balance}" /></p>
<p>格式化数字 (5): <fmt:formatNumber type="percent"
maxIntegerDigits="3" value="${balance}" /></p>
<p>格式化数字 (6): <fmt:formatNumber type="percent"
minFractionDigits="10" value="${balance}" /></p>
<p>格式化数字 (7): <fmt:formatNumber type="percent"
maxIntegerDigits="3" value="${balance}" /></p>
<p>格式化数字 (8): <fmt:formatNumber type="number"
pattern="###.###E0" value="${balance}" /></p>
<p>美元 :
<fmt:setLocale value="en_US"/>
<fmt:formatNumber value="${balance}" type="currency"/></p>
</body>
输出结果
数字格式化:
格式化数字 (1): ¥120,000.23
格式化数字 (2): 000.231
格式化数字 (3): 120,000.231
格式化数字 (4): 120000.231
格式化数字 (5): 023%
格式化数字 (6): 12,000,023.0900000000%
格式化数字 (7): 023%
格式化数字 (8): 120E3
美元 : $120,000.23
fmt:formatDate 使用指定的风格或模式格式化日期和时间
<fmt:formatDate
value="要显示的值 "
type=“要输出的类型”
pattern=“自定义格式模式”
timeZone=“显示日期的时区”
var=“变量名”/>
<h3>日期格式化:</h3>
<c:set var="now" value="<%=new java.util.Date()%>" />
<p>日期格式化 (1): <fmt:formatDate type="time" value="${now}" /></p>
<p>日期格式化 (2): <fmt:formatDate type="date" value="${now}" /></p>
<p>日期格式化 (3): <fmt:formatDate type="both" value="${now}" /></p>
<p>日期格式化 (4): <fmt:formatDate type="both" dateStyle="short" timeStyle="short" value="${now}" /></p>
<p>日期格式化 (5): <fmt:formatDate type="both" dateStyle="medium" timeStyle="medium" value="${now}" /></p>
<p>日期格式化 (6): <fmt:formatDate type="both" dateStyle="long" timeStyle="long" value="${now}" /></p>
<p>日期格式化 (7): <fmt:formatDate pattern="yyyy-MM-dd" value="${now}" /></p>
</body>
输出结果
日期格式化:
日期格式化 (1): 11:19:43
日期格式化 (2): 2016-6-26
日期格式化 (3): 2016-6-26 11:19:43
日期格式化 (4): 16-6-26 上午11:19
日期格式化 (5): 2016-6-26 11:19:43
日期格式化 (6): 2016年6月26日 上午11时19分43秒
日期格式化 (7): 2016-06-26
fmt:parseNumber 标签用来解析数字,百分数,货币
fmt:parseDate 标签用于解析日期。
fmt:setLocale 指定地区
fmt:timeZone 指定时区
fmt:setTimeZone 指定时区
fmt:message 显示资源配置文件信息
fmt:requestEncoding 设置request的字符编码
三、JSTL函数
JSTL包含一系列标准函数,大部分是通用的字符串处理函数:
<%@ taglib prefix=“fn” uri=“http://java.sun.com/jsp/jstl/functions” %>
fn:contains() 字符串是否包含指定的子串
...<!-- 测试 -->
<!-- 输出字符串 "I am from runoob" 给他起一个变量名 "theString" -->
<c:set var="theString" value="I am from runoob"/>
<!-- 判断当前字符串是否有 "runoob" -->
<!-- 判断是否区分大小写 -->
<c:if test="${fn:contains(theString, 'runoob')}">
<p>找到 runoob<p>
</c:if>
<c:if test="${fn:contains(theString, 'RUNOOB')}">
<p>找到 RUNOOB<p>
</c:if>
输出结果为:
找到 runoob
fn:split() 分隔符分隔然后组成一个子字符串数组并返回(截取字符串)
fn:join() 将数组中的元素合成一个字符串然后输出
${fn:split(待分隔的字符串, '分隔符')}<!-- 输出字符串 "www hello word com" 给他起一个变量名 "theString" -->
<c:set var="theString1" value="www hello word com"/>
<!-- 以空格为分割符,截取成数组 -->
<c:set var="theString2" value="${fn:split(theString1, ' ')}" />
<!-- 在数组后面拼接"-" -->
<c:set var="theString3" value="${fn:join(theString2, '-')}" />
<!-- 输出结果 -->
<p>theString3 字符串 : ${theString3}</p>
<!-- 以下同理 -->
<c:set var="theString4" value="${fn:split(theString3, '-')}" />
<c:set var="theString5" value="${fn:join(theString4, ' ')}" />
<p>theString5 字符串: ${theString5}</p>
输出结果:
theString3 字符串 : www-hello-word-com
theString5 字符串: www hello word com
fn:length() 返回字符串长度
<!-- 示例 -->
<c:set var="string1" value="This is first String."/>
<c:set var="string2" value="This is second String." />
<!-- 返回字符串长度 -->
<p>字符串长度 (1) : ${fn:length(string1)}</p>
<p>字符串长度 (2) : ${fn:length(string2)}</p>
输出结果:
字符串长度 (1) : 21
字符串长度 (2) : 22
fn:indexOf() 返回指定字符串在输入字符串中出现的位置
<!-- 示例 -->
<c:set var="string1" value="This is first String."/>
<c:set var="string2" value="This <abc>is second String.</abc>"/>
<!-- 下标 0 开始 ,指定字符串在输入字符串中出现的位置-->
<p>Index (1) : ${fn:indexOf(string1, "first")}</p>
<p>Index (2) : ${fn:indexOf(string2, "second")}</p>
输出结果:
Index (1) : 8
Index (2) : 13
fn:substring() 返回字符串的子集
<!-- 示例 -->
<c:set var="string1" value="This is first String."/>
<!-- 下标 0 开始 ,指定字符串在输入字符串中出现的位置 !!!不包含结束位置 -->
<c:set var="string2" value="${fn:substring(string1, 1, 5)}" />
<p>生成的子字符串为 : ${string2}</p>
输出结果:
生成的子字符串为 : his
fn:substringAfter() 返回字符串在指定子串之后的子集
fn:substringBefore() 返回字符串在指定子串之前的子集
${fn:substringBefore('要获取的对象或者变量', '指定字符串')} ${fn:substringBefore('要获取的对象或者变量', '指定字符串')}<!-- 示例 -->
<c:set var="string1" value="This is first String."/>
<!-- 截取指定指定字符串 不包含指定字符串 -->
<!-- fn:substringAfter : 截取指定字符串之后的值 -->
<!-- fn:substringBefore : 截取指定字符串之前的值 -->
<c:set var="string2" value="${fn:substringAfter(string1, 'is')}" />
<c:set var="string3" value="${fn:substringBefore(string1, 'first')}" />
<p>生成的子字符串 : ${string2}</p>
<p>生成的子字符串 : ${string3}</p>
输出结果:
生成的子字符串 : is first String.
生成的子字符串 : This is
fn:toLowerCase() 将字符串中的字符转为小写
fn:toUpperCase() 将字符串中的字符转为大写
${fn.toUpperCase('要存放的对象')} ${fn.toLowerCase('要存放的对象')}<!-- 示例 -->
<!-- 定义的输出语句 -->
<c:set var="string1" value="I am from RUNOOB"/>
<c:set var="string2" value="${fn:toLowerCase(string1)}" />
<c:set var="string3" value="${fn:toUpperCase(string1)}" />
<p>字符串为 : ${string2}</p>
<p>字符串为 : ${string3}</p>
输出结果:
字符串为 : i am from runoob
字符串为 : I AM FROM RUNOOB
fn:startsWith() 测试输入字符串是否以指定的前缀开始
fn:endsWith() 测试输入的字符串是否以指定的后缀结尾
... ...<!-- 示例 -->
<!-- 定义的输出语句 -->
<c:set var="string" value="Runoob: I am from Runoob."/>
<!-- fn:startsWith -->
<c:if test="${fn:startsWith(string, 'Google')}">
<p>字符串以 Google 开头</p>
</c:if>
<br />
<c:if test="${fn:startsWith(string, 'Runoob')}">
<p>字符串以 Runoob 开头</p>
</c:if>
<!-- fn:endsWith -->
<c:set var="theString" value="I am from runoob 123"/>
<c:if test="${fn:endsWith(theString, '123')}">
<p>字符串以 123 结尾<p>
</c:if>
<c:if test="${fn:endsWith(theString, 'unoob')}">
<p>字符串以 runoob 结尾<p>
</c:if>
fn:replace() 将输入字符串中指定的位置替换为指定的字符串然后返回
${fn:replace(<原始字符串>, <被替换的字符串>, <要替换的字符串>)}
<!-- 示例 -->
<!-- 定义的输出语句 -->
<c:set var="string1" value="I am from google"/>
<c:set var="string2" value="${fn:replace(string1, 'google', 'runoob')}" />
<p>替换后的字符串 : ${string2}</p>
fn:trim() 移除首位的空白符(去空格的)
${fn:trim("要输出的字符串")}
<!-- 定义输出字符串 -->
<c:set var="string1" value="I am from runoob "/>
<!-- 原字符串长度 -->
<p>string1 长度 : ${fn:length(string1)}</p>
<c:set var="string2" value="${fn:trim(string1)}" />
<!-- 移除后字符串长度 -->
<p>string2 长度 : ${fn:length(string2)}</p>
<p>字符串为 : ${string2}</p>
输出结果:
string1 长度 : 25
string2 长度 : 16
fn:containsIgnoreCase() 测试输入的字符串是否包含指定的子串,大小写不敏感
<!-- 示例 -->
<!-- 定义的输出语句 -->
<!-- 查询不区分大小写 -->
<c:set var="theString" value="I am from runoob"/>
<c:if test="${fn:containsIgnoreCase(theString, 'runoob')}">
<p>找到 runoob<p>
</c:if>
<c:if test="${fn:containsIgnoreCase(theString, 'RUNOOB')}">
<p>找到 RUNOOB<p>
</c:if>
输出结果:
找到 runoob
找到 RUNOOB
fn:escapeXml() 跳过可以作为XML标记的字符
<p>使用 escapeXml() 函数:</p>
<p>string (1) : ${fn:escapeXml(string1)}</p>
<p>string (2) : ${fn:escapeXml(string2)}</p>
<p>不使用 escapeXml() 函数:</p>
<p>string (1) : ${string1}</p>
<p>string (2) : ${string2}</p>
输出结果
使用 escapeXml() 函数:
string (1) : This is first String.
string (2) : This is second String.
不使用 escapeXml() 函数:
string (1) : This is first String.
string (2) : This is second String.