JSTL标签和常用函数的使用

来源:互联网 发布:无数据库论坛源码 编辑:程序博客网 时间:2024/05/21 12:40

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>

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

0 0