JSTL
Posted 努力奋斗的喵喵
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了JSTL相关的知识,希望对你有一定的参考价值。
1、什么是JSTL?
JSTL:JavaServer Pages Standard Tag Library,JSP标准标签库,它封装了JSP应用的通用核心功能。(JSTL一般需要与EL表达式联合使用)
2、为什么要用JSTL?
实现了JSP页面中的代码复用(基于标签库原理,重复率较高的代码块支持复用,提高效率)
书写JSP页面时可读性更强(跟xml很像,便于前端查看和参与开发)
3、如何使用JSTL?
导入JSTL.jar和standard.jar到/WEB-INF/lib/下。
采用taglib指令引入标签库即在JSP添加引用
4、项目中常用到的JSTL
4.1、核心标签:引用和新标签库 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/JSTL/core"%>
JSTL 核心标签库标签共有13个,功能上分为4类:
表达式控制标签:out、set、remove、catch
流程控制标签:if、choose、when、otherwise
循环标签:forEach、forTokens
URL操作标签:import、url、redirect
自己平时用到的有以下几种:
<c:out>用于在JSP中显示数据。escapeXml表示是否转换特殊字符,默认值true;
<c:set>用于设置变量值和对象属性
<c:if>用于判断表达式的值,如果表达式的值为 true 则执行其主体内容。
<c:choose>标签与Java switch语句的功能一样,用于在众多选项中做出选择。switch语句中有case,而<c:choose>标签中对应有<c:when>,switch语句中有default,而<c:choose>标签中有<c:otherwise>
<c:forEach>标签的作用就是迭代输出标签内部的内容。它既可以进行固定次数的迭代输出,也可以依据集合中对象的个数来决定迭代的次数
<c:forTokens>标签通过指定分隔符将字符串分隔为一个数组然后迭代它们。(如果分隔符delims为多个字符,就表示使用多种分隔符进行分割)
4.2、格式化标签:用来格式化并输出文本、日期、时间、数字。引用格式化标签库的语法如下:<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/JSTL/fmt"%>
平时项目中只用到了 <fmt:formatDate pattern="yyyy-MM-dd" value="${Date}"/>
4.3、JSTL函数:可以直接在表达式中使用,大大的简化了代码,提供代码的可读性,引用JSTL函数标签库的语法如下:<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/JSTL/functions" %>
fn:contains | 判断字符串是否包含另外一个字符串 | <c:if test="${fn:contains(name, searchString)}"> |
fn:containsIgnoreCase | 判断字符串是否包含另外一个字符串(大小写无关) | <c:if test="${fn:containsIgnoreCase(name, searchString)}"> |
fn:endsWith | 判断字符串是否以另外字符串结束 | <c:if test="${fn:endsWith(filename, ‘.txt‘)}"> |
fn:escapeXml | 把一些字符转成XML表示,例如<字符应该转为< | ${fn:escapeXml(tag.tagName)} |
fn:indexOf | 子字符串在母字符串中出现的位置 | ${fn:indexOf(name, ‘-‘)} |
fn:join | 将数组中的数据联合成一个新字符串,并使用指定字符格开 | ${fn:join(array, ‘;‘)} |
fn:length | 获取字符串的长度,或者数组的大小 | ${fn:length(shoppingCart.products)} |
fn:replace | 替换字符串中指定的字符 | ${fn:replace(text, ‘-‘,‘?‘)} |
fn:split | 把字符串按照指定字符切分 | ${fn:split(customerNames, ‘;‘)} |
fn:startsWith | 判断字符串是否以某个子串开始 | <c:if test="${fn:startsWith(product.id, ‘100-‘)}"> |
fn:substring | 获取子串 | ${fn:substring(zip, 6, -1)} |
fn:substringAfter |
获取从某个字符所在位置开始的子串 |
${fn:substringAfter(zip, ‘-‘)} |
fn:substringBefore | 获取从开始到某个字符所在位置的子串 | ${fn:substringBefore(zip, ‘-‘)} |
fn:toLowerCase | 转为小写 | ${fn.toLowerCase(product.name)} |
fn:toUpperCase | 转为大写字符 | ${fn.UpperCase(product.name)} |
fn:trim | 去除字符串前后的空格 | ${fn.trim(name)} |
5、应用小实例:
<c:set value="" var="Ids" />
<c:set value="" var="Names" />
<c:forEach var="item" items="${groups}" varStatus="status">
<c:choose>
<c:when test="${status.first}">
<c:set value="${item.groupId}" var="Ids" />
<c:set value="${item.groupName}" var="Names" />
</c:when>
<c:otherwise>
<c:set value="${Ids},${item.groupId}" var="Ids" />
<c:set value="${Names},${item.groupName}" var="Names" />
</c:otherwise>
</c:choose>
</c:forEach>
以上是关于JSTL的主要内容,如果未能解决你的问题,请参考以下文章