JSTL标签和常用函数的使用

JSTL标签和常用函数的使用


使用JSTL标签和函数前先将所需的jar包导入到项目的WEB-INF/lib目录下并创建路径(Build Path)
这里写图片描述
使用JSTL标签和函数需要先在jsp页面头部中导入标签库

<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

c:out标签的使用

    <h2>c:out标签的使用</h2>
    <p>--------------------------------------</p>
    <h4>输出常量:</h4>
    <!-- value表示输出的变量或值 -->
    <c:out value="现在输出的是常量"></c:out><br>
    <h4>输出变量:</h4>
    <% request.setAttribute("Variable", "Variable"); %>
    <c:out value="${Variable}"></c:out><br>
    <h4>当变量不存在的时候输出变量:</h4>
    <!-- default表示value无效时所输出的值 -->
    <c:out value="${Variable1}" default="变量不存在"></c:out><br>
    <h4>设置输出转义后的字符需要escapeXml属性值设置为false:</h4>
    <c:out value="&lt out标签 &gt" escapeXml="false"></c:out>
    <p>--------------------------------------</p>

c:set标签的使用
person为jsp的useBean标签获取的JavaBean中的Person对象(此处已省略)

    <h2>c:set标签的使用</h2>
    <p>--------------------------------------</p>
    <h4>存值到scope中</h4>
    <!-- value是所要存的值,var是存值的名,scope是存值的范围 -->
    <!-- value值可以写在标签里或者一对标签中间 -->
    <c:set value="name1" var="name1" scope="request"></c:set>
    <c:out value="${name1}"></c:out><br>
    <c:set var="name2" scope="request">name2</c:set>
    <c:out value="${name2}"></c:out><br>
    <h4>通过set标签向JavaBean中person赋值</h4>
    <!-- target为目标对象,property为属性 -->
    <c:set target="${person}" property="name" value="张三"></c:set>
    <c:set target="${person}" property="age">28</c:set>
    <c:set target="${person}" property="add">湖北工业大学</c:set>
    <!-- 输出person对象的属性 -->
    <!-- EL表达式会根据name去User类里寻找这个name的get方法,此时会自动把name首字母大写并加上get前缀,
    一旦找到与之匹配的方法,El表达式就会认为这就是要访问的属性,并返回属性的值 -->
    <c:out value="${person.name}"></c:out>&nbsp;&nbsp;
    <c:out value="${person.age}"></c:out>&nbsp;&nbsp;
    <c:out value="${person.add}"></c:out>&nbsp;&nbsp;
    <p>--------------------------------------</p>

c:remove标签的使用

    <h2>c:remove标签的使用</h2>
    <p>--------------------------------------</p>
    <c:set var="firstName" value="理发师Tony"></c:set>
    <c:out value="${firstName}"></c:out><br>
    <!-- 移除变量名为var的值 -->
    <c:remove var="firstName"/>
    <c:out value="${firstName}" default="理发师Tony已移除!"></c:out>
    <p>--------------------------------------</p>

c:catch标签的使用

    <h2>c:catch标签的使用</h2>
    <p>--------------------------------------</p>
    <!-- 如果catch里的语句有问题将不执行catch里面的语句并将错误信息保存在var中 -->
    <c:catch var="error">
    下面的一条语句是随便写的<br>
    <c:set target="aa" property="bb">sadsasa</c:set>
    </c:catch>
    错误信息为:
    <c:out value="${error}"></c:out>
    <p>--------------------------------------</p>

c:if标签的使用

    <h2>c:if标签的使用</h2>
    <p>--------------------------------------</p>
    <!-- test属性用于存放判断的条件,一般使用EL表达式来编写 -->
    <!-- var指定名称用来存放判断的结果类型为true或false -->
    <!-- scope用来存放var属性存放的范围 -->
    <form action="index.jsp" method="post">
        请输入您的成绩:<input type="text" name="score01" value="${param.score01}">
        <input type="submit">
    </form>
    <!-- 从param中取出名为score01的值进行判断 -->
    <c:if test="${param.score01 >= 90}" var="result" scope="application">
        <c:out value="恭喜,您的成绩是优秀"></c:out>
    </c:if>
    <c:out value="${result}"></c:out>
    <c:out value="${applicationScope.result}"></c:out>
    <p>--------------------------------------</p>

c:choose-when-otherwise标签的使用

    <h2>c:choose-when-otherwise标签的使用</h2>
    <p>--------------------------------------</p>
    <form action="index.jsp" method="post">
        请输入您的成绩:<input type="text" name="score02" value="${param.score02}">
        <input type="submit">
    </form>
    <!-- test表示判断语句 -->
    <!-- otherwise可写可不写 -->
    <c:choose>
        <c:when test="${param.score02 >= 90 && param.score02 <=100}">
            <c:out value="优秀"></c:out>
        </c:when>
        <c:when test="${param.score02 >= 80 && param.score02 <90}">
            <c:out value="良好"></c:out>
        </c:when>
        <c:when test="${param.score02 >= 70 && param.score02 <80}">
            <c:out value="中等"></c:out>
        </c:when>
        <c:when test="${param.score02 >= 60 && param.score02 <70}">
            <c:out value="及格"></c:out>
        </c:when>
        <c:when test="${param.score02 >= 0 && param.score02 <60}">
            <c:out value="不及格"></c:out>
        </c:when>
        <c:otherwise>
            <c:out value="您的输入有问题"></c:out>
        </c:otherwise>
    </c:choose>
    <p>--------------------------------------</p>

c:forEach标签的使用

    <h2>c:forEach标签的使用</h2>
    <p>--------------------------------------</p>
    <!-- var设定变量名用于存储从集合中取出元素 -->
    <!-- items指定要遍历的集合(必须无默认值) -->
    <!-- begin、end用于指定遍历的起始位置和终止位置(有默认) -->
    <!-- step指定循环步长(有默认) -->

    <%
        List<String> fruits = new ArrayList<String>();
        fruits.add("apple");
        fruits.add("orange");
        fruits.add("pear");
        fruits.add("watermelon");
        fruits.add("banana");
        fruits.add("grape");
        request.setAttribute("fruits", fruits);
    %>
    <!-- forEach标签的用法 -->
    <!-- 用法一:全部遍历 -->
    <c:forEach var="fruit" items="${fruits}">
        <c:out value="${fruit}"></c:out><br>
    </c:forEach>
    <c:out value="==========================="></c:out><br>

    <!-- 用法二:部分遍历 -->
    <c:forEach var="fruit" items="${fruits}" begin="1" end="4">
        <c:out value="${fruit}"></c:out><br>
    </c:forEach>
    <c:out value="==========================="></c:out><br>

    <!-- 用法三:部分遍历并指定步长 -->
    <c:forEach var="fruit" items="${fruits}" begin="1" end="4" step="2">
        <c:out value="${fruit}"></c:out><br>
    </c:forEach>
    <c:out value="==========================="></c:out><br>

    <!-- 用法四:部分遍历并输出元素状态 -->
    <c:forEach var="fruit" items="${fruits}" begin="2" end="4" varStatus="fru">
        <c:out value="${fruit}的四个属性值"></c:out><br>
        <c:out value="index属性:${fru.index}"></c:out><br>
        <c:out value="first属性:${fru.first}"></c:out><br>
        <c:out value="last属性:${fru.last}"></c:out><br>
        <c:out value="count属性:${fru.count}"></c:out><br>
        <c:out value="-------------------------"></c:out><br>
    </c:forEach>
    <c:out value="==========================="></c:out><br>
    <p>--------------------------------------</p>

c:forTocken标签的使用

    <h2>c:forTocken标签的使用</h2>
    <p>--------------------------------------</p>
    <!-- c:forTocken的使用方法一 -->
    <!-- items指定被迭代的字符串 -->
    <!-- delims指定使用的分隔符 -->
    <!-- var指定用来存放遍历到的成员 -->
    <!-- begin指定遍历的开始位置(int型从取值0开始) -->
    <!-- end指定遍历结束的位置(int型,默认集合中最后一个元素) -->
    <!-- step为遍历的步长(大于0的整型) -->
    <!-- varStatus通过index、count、first、last几个状态值描述begin和end子集中的元素的状态 -->
    <c:forTokens items="010-8888888-123" delims="-" var="num">
        <c:out value="${num}"></c:out><br>
    </c:forTokens>
    <c:out value="==============================="></c:out><br>

    <!-- c:forTocken的使用方法二 -->
    <c:forTokens items="010-1234567-321-2132-54645-67876867" delims="-" var="num0" begin="1" end="4">
        <c:out value="${num0}"></c:out><br>
    </c:forTokens>
    <c:out value="==============================="></c:out><br>

    <!-- c:forTocken的使用方法三 -->
    <c:forTokens items="010-1234567-321-2132-54645-67876867" delims="-" var="num1" step="2">
        <c:out value="${num1}"></c:out><br>
    </c:forTokens>
    <c:out value="==============================="></c:out><br>

    <!-- c:forTocken的使用方法四 -->
    <c:forTokens items="010-1234567-321-2132-54645-67876867" delims="-" var="num1" step="2" varStatus="n">
        <c:out value="num的index属性:${n.index}"></c:out><br>
        <c:out value="num的count属性:${n.count}"></c:out><br>
        <c:out value="num的first属性:${n.first}"></c:out><br>
        <c:out value="num的last属性:${n.last}"></c:out><br>
        <c:out value="---------------------------"></c:out><br>
    </c:forTokens>
    <c:out value="==============================="></c:out><br>
    <p>--------------------------------------</p>

c:import标签的使用-网络上的绝对路径已注释

    <h2>c:import标签的使用-网络上的绝对路径已注释</h2>
    <p>--------------------------------------</p>
    <!-- url为被导入资源的URL路径 -->
    <!-- context为相同服务器下的其他web工程,必须以"/"开头 -->
    <!-- Scope var变量的JSP范围 -->
    <!-- charEncoding被导入文件的编码格式 -->
    <!-- varReader以Reader类型存储被包含文件内容 -->

    <!-- import标签的用法 -->
    <!-- 导入网络上的绝对路径 -->
    <!-- 网络上的绝对路径可能有变动或修改,所以import标签通常在catch标签里面捕获异常 -->

    <%-- 
    <c:catch var="error01">
        <c:import url="http://www.baidu.com" charEncoding="utf-8"></c:import>
    </c:catch>
    <c:out value="${error01}"></c:out><br><br>
     --%>

    <!-- 导入相对路径 -->
    <c:catch var="error02">
        <c:import url="NewFile.html" charEncoding="utf-8"></c:import>
    </c:catch>
    <c:out value="${error02}"></c:out><br><br>

    <!-- var及scope相对路径 -->
    <c:catch var="error03">
        <c:import url="NewFile.html" charEncoding="utf-8" scope="session" var="NewFile"></c:import>
    </c:catch>
    <c:out value="${error03}"></c:out><br><br>
    <c:out value="import标签存储的HTML字符串变量值为:${NewFile}"></c:out>

    <!-- context属性的用法 -->
    <c:catch var="error04">
        <c:import url="/index.html" charEncoding="utf-8" context="/C_outLabel"></c:import>
    </c:catch>
    <c:out value="${error04}"></c:out><br><br>
    <p>--------------------------------------</p>

c:redirect标签的使用–已注释
url的值为重定向的到的页面(可修改)

    <h2>c:redirect标签的使用--已注释</h2>
    <p>--------------------------------------</p>
    <!-- 重定向到redirectPage.jsp -->

    <%-- 
    <c:redirect url="redirectPage.jsp">
        <c:param name="username">TB</c:param>
    </c:redirect> 
    --%>
    <p>--------------------------------------</p>

c:url标签的使用
C_JSTL_LabelAndFunction为项目名(可修改)
urlPage.jsp为跳转的url页面(可修改)

    <h2>c:url标签的使用</h2>
    <p>--------------------------------------</p>
    <c:if test="${5 < 6}">
        <c:set var="urlPage">urlPage.jsp</c:set>
    </c:if>
    <c:url var="url" value="http://localhost:8080/C_JSTL_LabelAndFunction/${urlPage }"></c:url>
    <a href="${url }">跳转到url页面!</a>
    <p>--------------------------------------</p>

JSTL常用的function的使用

    <h2>JSTL常用的function的使用</h2>
    <p>--------------------------------------</p>
    <c:out value="“你好,Hello World!”字符串是否包含“Hello”子字符串:${fn:contains('你好,Hello World!','Hello') }"></c:out><br>
    <c:out value="“你好,Hello World!”字符串是否包含“aaaa”子字符串:${fn:contains('你好,Hello World!','aaaa') }"></c:out><br>
    <c:out value="“你好,Hello World!”字符串是否包含“hello”子字符串:${fn:contains('你好,Hello World!','hello') }"></c:out><br>
    <c:out value="“你好,Hello World!”字符串是否包含“hello”子字符串:${fn:containsIgnoreCase('你好,Hello World!','hello') }"></c:out><br>
    <c:out value="“World”字符串是否在“你好,Hello World!”字符串末尾:${fn:endsWith('你好,Hello World!','World') }"></c:out><br>
    <c:out value="“你好”字符串是否在“你好,Hello World!”字符串开头:${fn:startsWith('你好,Hello World!','你好') }"></c:out><br>
    <c:out value="“你好,Hello World!”字符串中“llo”子字符串的索引:${fn:indexOf('你好,Hello World!','llo') }"></c:out>
    <p>--------------------------------------</p>

其他常用JSTL函数

  • fn:length()–返回字符串长度或集合中元素的数量
    ${fn:length(collection | string)}
  • fn:replace()–将字符串中所有指定的子串用另外的字符串替换
    ${fn:replace(<原始字符串>, <被替换的字符串>, <要替换的字符串>)}
  • fn:split()–将一个字符串用指定的分隔符分裂为一个子串数组
    ${fn:split(<带分隔符的字符串>, <分隔符>)}
  • fn:startsWith()–用于确定一个字符串是否以指定的前缀开始
    <c:if test="${fn:startsWith(<原始字符串>, <搜索的前缀>)}">
    ...
    </c:if>

这是本人第一次写博客,写得不好请见谅!

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值