jstl之c标签、Function函数库

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
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值