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表示,例如<字符应该转为&lt; ${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的主要内容,如果未能解决你的问题,请参考以下文章

如何在SpringBoot中使用JSP

JavaWeb详解(第六篇)之JSTL标签简介

pom.xml错误怎么解决

EL表达式 与 JSTL标准标签库

java web007——表达式语言JSTL标签库

JSP常用标签——JSTL标签和EL表达式