jstl之c标签、Function函数库

来源:互联网 发布:正版广联达预算软件 编辑:程序博客网 时间:2024/05/21 19:37

JSTL组成:
JSTL –Core 核心标签库。 - 这是本部分的重点
JSTL – I18N - 国际化标签库。Internationalization- I18N
JSTL - Functions – 函数库。
JSTL – SQL – 数据库操作标签(有悖于MVC设计模式不用不讲)。
JSTL - XML ,对XML的操作(同SQL标签)。

JSTL一般必须配合EL表达式使用才能发挥其功能之强大

如果你的Web项目是基于JavaEE2.5或以上的。可以在你项目的任意页面上通过<%@ taglib 指令使用JSTL的核心标签库。
<%@ taglib uri=”http://java.sun.com/jsp/jstl/core” prefix=”c”%>
uri是引用标签库的资源定位符,并不代表一个实际的地址。
Prefix是自定义的前缀。

JSTL-Core一共包含以下几个子标签:
这里写图片描述
这里写图片描述

标签的具体使用说明可以用Java反编译软件JD-GUI打开tomcat/webapps下的对应项目下的WEB-INF/LIB/jstl-impl.jar/META-INF找到对应的标签打开即可。

具体使用代码示例如下:

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%><%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <title>jstl演示</title>  </head>  <body>                 <!-- 1、演示c:out的用法 -->    <%        pageContext.setAttribute("RED", "<font color='red'>你好</font>");     %>     <c:out value="${RED }" />             <%--结果为:<font color='red'>你好</font>,escapeXml默认为true,即默认输出为原样格式 --%>        <br/>     <c:out value="${RED }" escapeXml="false" />            <%--结果为:红色的“你好” --%>     <br/>     <c:out value="${GREEN }" escapeXml="false" default="找不到"/>             <%--结果为:找不到  ”/>从page到application开始查找,如果没有找到,就显示默认值“找不到” --%>     <br/>              <!-- 2、演示c:set的用法 -->        <c:set var="name" value="Jack" />     ${name }              <%--结果为:Jack --%>     <br/>     <jsp:useBean id="user" class="cn.hncu.domain.User"/>     <c:set target="${user }" property="name" value="Tom"/>         <c:set target="${user }" property="age" value="24"/>       ${user.name }&nbsp;&nbsp;${user.age }                <%--结果为:Tom 24 --%>     <br/>     <jsp:useBean id="map" class="java.util.HashMap" scope="request"/>     <c:set target="${map }" property="name" value="张三" />     <c:set target="${map }" property="sex" value="男" />     ${map.name }&nbsp;&nbsp;${map.sex }             <%--结果为:张三 男 --%>     <br/>            <!-- 3、演示c:if的用法 -->         <c:if test="${map.name=='张三' }" var="boo" scope="request" >        abcdefg     </c:if>     <c:if test="${!boo }">        gfdecba     </c:if>        <%--结果为:abcdefg,注意此处因为有包含关系,c:if不能用自封闭--%>       <br/>            <!-- 4、演示c:choose c:when c:otherwise的用法 -->     <c:set var="score" value="95"/>     <c:choose>        <c:when test="${score>90 }">            优秀        </c:when>        <c:when test="${score>80 }">            良好        </c:when>        <c:when test="${score>70 }">            中等        </c:when>        <c:otherwise>            不行        </c:otherwise>     </c:choose>            <%--  结果为:优秀  此处功能相当于带break功能的switch-case语句 --%>     <br/>            <!-- 5、演示c:remove -->     <c:set var="aaa" value="abcde" />       <c:remove var="aaa"/>     ${aaa }            <%--  没有输出结果,因为移除了aaa属性 --%>     <br/>            <!-- 5、演示c:import -->     <c:import url="/jsps/aa.jsp"></c:import>            <%-- 此处有两个细节,url的第一个"/"代表项目根本目录,功能上此处相当于jsp动态导入,                        两个页面共享同一个request --%>     <br/>                       <%--                   <!-- 6、演示c:redirect -->     <c:redirect  url="/jsps/bb.jsp"/>    --%>        <%--  重定向,相当于response.sendRedirect(...)  --%>            <!-- 7、演示c:rforTokens -->     <c:forTokens items="aa,bb,cc,dd" delims="," var="x">        ${x },,,     </c:forTokens>            <%--  结果为:aa,,, bb,,, cc,,, dd,,,,相当于拆分字符串 --%>     <br/>                  <!-- 8、演示c:forEach -->     <%            String strs[] = {"11","22","33","44","55"};            pageContext.setAttribute("strs", strs);      %>     <c:forEach items="${strs}" var="str">        ${str }-     </c:forEach>            <%--  结果为:11-22-33-44-55,功能相当于增强for循环 --%>     <c:forEach begin="20" end="40" step="2" var="i" varStatus="x">        ${i },${x.index },${x.count }<br/>     </c:forEach>                   <%-- 功能相当于普通for循环 --%>  </body></html>

jstl的Function函数调用方式:
用之前现在页面首部导入标签<%@taglib uri=”http://java.sun.com/jsp/jstl/functions” prefix=”fn”%>

引用:${fn:函数名(参数)}

function标签库函数使用:

1:${fn:contains(name, searchString)} name变量的字符串值是否包含searchString子串,返回boolean值

2:${fn:containsIgnoreCase(name, searchString)} 与1相同+忽视大小写

3:${fn:endsWith(filename, “.txt”)} 判断filename是否以.txt子串结束 ,返回boolean值

4:${fn:escapeXml(param:info)} Escapes characters that could be interpreted as XML markup.返回string值

5:fn:indexOf(name,)nameint6{fn:join(array, “;”)} 将array数组,用;连接成一个字符串,返回string值

7:${fn:length(shoppingCart.products)} shoppingCart.products变量的长度,返回int值

8:${fn:replace(text, “-“, “•”)} 将text中的-字符串用•字符串代替,返回行的字符串String值

9:${fn:split(customerNames, “;”)} 将customerNames用;分割,返回字符串数组

10:${fn:startsWith(product.id, “100-“)} 判断product.id是否以100-子串开头 ,返回boolean值

11:${fn:substring(zip, 6, -1)} 截取zip的子串,从下标为6 到length-1(不包含)的子串,返回子串String值

12:${fn:substringAfter(zip, “-“)} 将zip中 从 第一次出现-字符串的下标 到最后 截取成子串,返回子串String值

13:${fn:substringBefore(zip, “-“)} 将zip中 从下标0 到 第一次出现-字符串的下标 (不包含) 截取成子串,返回子串String值

14:${fn.toLowerCase(product.name)} 将product.name全部字母转换成小写,返回新的String值

15:${fn.UpperCase(product.name)} 将product.name全部字母转换成大写,返回新的String值

16:${fn.trim(name)} name前后空格去掉,返回新的String值

0 0
原创粉丝点击