zoukankan      html  css  js  c++  java
  • JSTL

    JSTL简介

       JSP虽然为我们提供了EL表达式用来替代JSP表达式,但是由于EL表达式仅仅具有输出功能,而不替代页面中的JSP脚本片段。

      为了方便开发使用Sun公司又定义了一套通用的标签库名为JSTL(JSP Tag Standard Tag Library),里面定义很多我们开发中常用的方法,方便我们使用。

        JSTL的标准由Sun公司定制,Apache的Jakarta小组负责实现。

      JSTL由5个不同功能的标签库组成。

    使用JSTL

      使用JSTL必须在项目中导入两个jar包

         taglibs-standard-impl-1.2.1.jar

         taglibs-standard-spec-1.2.5.jar

      然后还需要在JSP页面中通过taglib标签引入标签库。

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

          prefix用来指定前缀名,我们通过该名来使用JSTL

          uri相当于库的唯一标识,因为JSTL由多个不同的库组成,使用该属性指定要导入哪个库。

      使用JSTL

         <c:out value="hello"></c:out>

         这个例子标识,调用前缀为c的标签的out方法,向页面中输出value属性中的字符串。

         JSTL的使用非常像html标签。

     

    标签库

    JSTL由五个不同功能的标签库组成。

    功能范围

    URI

    前缀

    核心

    http://java.sun.com/jsp/jstl/core

    c

    格式化

    http://java.sun.com/jsp/jstl/fmt

    fmt

    函数

    http://java.sun.com/jsp/jstl/functions

    fn

    数据库(不使用)

    http://java.sun.com/jsp/jstl/sql

    sql

    XML(不使用)

    http://java.sun.com/jsp/jstl/xml

    x

     

    核心标签(Core Tags)

      Core标签库,包括了我们最常用的标签。

        要使用Core标签库需要在JSP页面中加入:

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

    <c:out>

      <c:out>用于计算一个表达式并将结果输出到当前页面。

      功能类似于JSP表达式<%= >和EL表达式${}

       可以设置的属性

          value

          作用:要输出的值

           参数类型:Object

         default

          作用:当value为null时显示的默认值。

           参数类型:Object

        escaXml

           作用:是否对特殊字符进行转义。

          参数类型:boolean

         例:<c:out value="${user.name}" default="" escapeXml="true"></c:out>

           

    <c:set>

      <c:set>用于添加或修改域中的属性

       可以设置的属性:

         value

           作用:要设置的值

           参数类型:Objec

          var

           作用:表示域中存放的属性名。

          参数类型:String

        scope

           作用:指定域(pageContext、request、session、application),若不指定则为pageContext

           参数类型:String

         target

          作用:要修改的域对象的属性名(必须是JavaBean或者Map)

           参数类型:Object

         property

          作用:指定要修改的对象的属性名

          参数类型:String

        

          设置属性:

              <c:set var="key" value="value" scope="request"></c:set>

          修改属性:

              <c:set property="name" target="${user}" value="孙悟空"></c:set>

    <c:remove>

      <c:remove>用于移除域中的属性

       可以设置的属性:

         var

           作用:设置要移除的属性的名字

          类型:String

         scope

            作用:设置要移除属性所在的域,若不指定则删除所有域中的对应属性

           参数类型:String

         例:

          移除所有域中key属性:<c:remove var="key"/>

          移除request中的key属性: <c:remove var="key" scope="request"/>

    <c:if>

      <c:if>用于实现if语句的判断功能

      可设置的属性

        test

          作用:设置if判断的条件,用于判断标签体是否被执行

           参数类型:boolean

         var

            作用:用于指定接收判断结果的变量名

          参数类型:boolean

         scope

          作用:指定判断结果保存到哪个域

          参数类型:String

         例:

          

        <c:if test="${empty user }" var="isUserEmpty" scope="request">
    
                         用户为空
    
        </c:if>

    <c:choose>、<c:when>、<c:otherwise>

       <c:choose>、<c:when>、<c:otherwise>三个标签配合使用,功能类似于Java中的if/else

        <c:choose>是<c:when>和<c:otherwise>的父标签

       <c:when>的属性

         test

           作用:用于设置判断条件,若正确则c:when中的代码执行,否则不执行

           参数类型:boolean

       <c:otherwise>

          作用:如果所有的<c:when>都没有执行则执行<c:otherwise>的标签体

         例:

           

    <c:forEach>

        <c:choose>
    
                        <c:when test="${param.age>=18 }">
    
                                 您已经成年
    
                        </c:when>
    
                        <c:otherwise>
    
                                您未成年
    
                        </c:otherwise>
        </c:choose>

      <c:forEach>用于对多个对象的集合进行迭代,重复执行标签体,或者重复迭代固定的次数。

       可设置属性:

         var

            作用:设置遍历出对象的名称

           参数类型:String

         items

           作用:指定要遍历的集合对象

           参数类型:数组、字符串和各种集合

         varStatus

          作用:指定保存迭代状态的对象的名字,该变量引用的是一个LoopTagStatus类型的对象,通过该对象可以获得一些遍历的状态:

               count

               index

               first

              last

              name

           参数类型:String

     

         begin

           作用:指定遍历的开始位置

           参数类型:int

        end

           作用:指定遍历的结束位置

           参数类型:int

         step

          作用:迭代的步长

           参数类型:int

         例:

         

     <c:forEach items="${list}" var="user" begin="0" end="4" step="2" varStatus="vs">
    
                             ${vs.index} -- ${user.name } -- ${user.age }<br />
    
        </c:forEach>

    <c:url>

      <c:url>主要用来重写URL地址

        可设置的属性:

        value

           作用:设置要处理的URI地址,注意这里要以/开头

          可接受参数:String

         var

          作用:修改后存储到域对象中的uri属性名。

          可接受参数:String

         scope

          作用:设置修改后uri存放的域

           可接受参数:String

         例:

          使用相对路径

        <c:url value="index.jsp" var="uri" scope="request">
    
                 <c:param name="name" value="张三"></c:param>
    
        </c:url>

            会生成如下地址:index.jsp?name=%E5%BC%A0%E4%B8%89

     

          使用绝对路径会自动在路径前加上项目名:

        <c:url value="/index.jsp" var="uri" scope="request">
    
                 <c:param name="name" value="张三"></c:param>
    
        </c:url>

          会生成如下地址:/Test_JSTL/index.jsp?name=%E5%BC%A0%E4%B8%89

    <c:redirect>

       <c:redirect>主要用于将请求重定向到另一个资源地址

       可设置的属性:

         uri

          作用:指定要重定向到的目标地址,注意这里指定绝对路径会自动加上项目名

           参数类型:String

         例:

    <c:redirect url="/target.jsp"></c:redirect>

    JSTL函数(JSTL Functions)

        函数标签库是在JSTL中定义的标准的EL函数集。

        函数标签库中定义的函数基本上都是对字符串的操作。

        引入:

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

        fn:contains和fn:containsIgnoreCase

          作用:用于判断字符串中是否包含指定字符串,containsIgnoreCase忽略大小写。

          语法:fn:contains(string,subString) à boolean

          参数和返回值:

    参数

    类型

    作用

    string

    String

    源字符串

    subString

    String

    要查找的字符串

    返回值

    boolean

    若string中包含subString则返回true,否则返回false

          例:

                   ${fn:contains("hello","HE")}  -->false

                   ${fn:containsIgnoreCase("hello","HE")} --> true

        fn:startsWith和fn:endsWith

          作用:判断一个字符串是否以指定字符开头(startsWith)或结尾(endsWith)

          语法:fn:startsWith(string , prefix) à boolean

                     fn:endsWith(string,suffix) à boolean

             参数和返回值:

    参数

    类型

    作用

    string

    String

    源字符串

    prefix 或 suffix

    String

    要查找的前缀或后缀字符串

    返回值

    boolean

    符合要求返回true,否则返回false

          例:${fn:startsWith("hello","he") } -->true

                       ${fn:endsWith("hello","he") } --> false

        fn:indexOf

          作用:在一个字符串中查找指定字符串,并返回第一个符合的字符串的第一个字符的索引。

          语法:fn:indexOf(string,subString) à int

          参数和返回值:

    参数

    类型

    作用

    string

    String

    源字符串

    subString

    String

    要查找的字符串

    返回值

    int

    若在string中找到subString则返回第一个符合的索引,若没有符合的则返回-1

          :${fn:indexOf("hello",'e') } -->1

        fn:replace

          作用:将一个字符串替换为另外一个字符串,并返回替换结果

          语法:fn:replace(str , beforeSubString , afterSubString) à String

          参数和返回值:

    参数

    类型

    作用

    str

    String

    源字符串

    beforeSubString

    String

    被替换的字符串

    afterSubString

    String

    要替换的新字符串

    返回值

    String

    替换后的字符串

          :${fn:replace("hello","llo",'e') } -->hee

        fn:substring

          作用:截取字符串

          语法:fn: substring (str , beginIndex , endIndex) à String

          参数和返回值:

    参数

    类型

    作用

    str

    String

    源字符串

    beginIndex

    int

    开始位置索引(包含该位置)

    endIndex

    int

    结束位置索引(不包含自身)

    返回值

    String

    返回截取的字符串

          例:${fn:substring("hello",1,3) } -->el

        fn:substringBefore和fn:substringAfter

          作用:返回一个字符串指定子串之前(substringBefore)之后(substringAfter)的字符串

          语法:fn: substringBefore(string,subString) à String

             fn: substringAfter (string,subString) -->String

          参数和返回值:

    参数

    类型

    作用

    str

    String

    源字符串

    subString

    int

    指定str中的一个子串,该串之前或之后的字符串将被返回。

    返回值

    String

    返回截取的字符串

          例:  ${fn:substringBefore("hello","l") }--> he

                    ${fn:substringAfter("hello","l") } --> lo

        fn:split

          作用:将一个字符串拆分成字符串数组。

          语法:fn:split(string,delimiters) -->String

          参数和返回值:

    参数

    类型

    作用

    str

    String

    要被拆分的字符串

    delimiters

    String

    指定根据什么内容拆分字符串

    返回值

    String[]

    返回拆分后的字符串数组

          例:${fn:split("a-b-c-d-e-f-g","-")} à 返回一个数组对象[a,b,c,d,e,f,g]

        fn:join

          作用:将数组中所有元素连接成一个字符串

          语法:fn:join(array,sparator) à String

          参数和返回值:

    参数

    类型

    作用

    str

    String

    要被拆分的字符串

    sparator

    String

    在结果中每个元素之间的分隔符

    返回值

    String[]

    拼接之后的结果

          例:

    <%

    String[] strs = new String[]{"a","b","c","d","e","f"};

    pageContext.setAttribute("strs", strs);

    %>

    ${fn:join(strs,'-') }

                 返回:a-b-c-d-e-f

        fn:toLowerCase和fn:toUpperCase

          作用:将字符串都转换成大写(toUpperCase)或小写(toLowerCase)字符

          语法:

                   fn: toLowerCase (str) --> String

              fn: toUpperCase(str) -->String

          参数和返回值:

    参数

    类型

    作用

    str

    String

    源字符串

    返回值

    String

    转换为大写或小写的字符串

          例: ${fn:toLowerCase("ABCDEFG") } -->abcdefg

                   ${fn:toUpperCase("abcdefg") } -->ABCDEFG

        fn:trim

          作用:去掉字符串的前后空格

          用法:fn:trim(str) à String

          参数和返回值:

    参数

    类型

    作用

    str

    String

    源字符串

    返回值

    String

    去掉前后空格的结果

          例:${fn:trim("     hello  ") } --> hello

        fn:length

          作用:返回集合或者字符串的长度

          用法:fn:trim(input) à int

          参数和返回值:

    参数

    类型

    作用

    input

    String、集合、数组

    要计算长度的目标

    返回值

    int

    集合或字符串的长度

          例:${fn:length("hello") }--> 5

  • 相关阅读:
    括号匹配性检测C语言实现
    预处理命令--宏定义
    *运算和&运算
    retain, copy, assign以及autorelease
    自定义 一个单例
    多米音乐笔试题
    UI-自定义视图、视图控制器
    Foundation框架—集合
    Foundation框架—字符串
    Foundation框架—结构体
  • 原文地址:https://www.cnblogs.com/alternative/p/7354160.html
Copyright © 2011-2022 走看看