用jstl截取字符串

用jstl截取字符串

5485人阅读 评论(0) 收藏 举报
 

jstl以前在jsp页面截取字符串时都是用Java表达式,感觉在jsp页面用多了Java表达式不是很好(那时主要是不知道jstl标签怎么去截取字符串,所以就只能用Java表达式了)。今天在网上找了些相关资料,原来jstl标签是可以截取字符串的,主要有两种方法:

一、用jstl原有的标签库中方法(fn函数)

  1. <c:set var="testStr" value="做一个截取字符串长度的测试"  
  2. <c:choose>  
  3.     <c:when test="${fn:length(testStr) > 10}">  
  4.         <c:out value="${fn:substring(testStr, 0, 10)}......" />  
  5.     </c:when>  
  6.    <c:otherwise>  
  7.       <c:out value="${testStr}" />  
  8.     </c:otherwise>  
  9. </c:choose>  
      <c:set var="testStr" value="做一个截取字符串长度的测试"

      <c:choose>

          <c:when test="${fn:length(testStr) > 10}">

              <c:out value="${fn:substring(testStr, 0, 10)}......" />

          </c:when>

         <c:otherwise>

            <c:out value="${testStr}" />

          </c:otherwise>

      </c:choose>


 

注:记得要引用标签库
        <%@ taglib uri="
http://java.sun.com/jsp/jstl/core" prefix="c"%>
        <%@ taglib uri="
http://java.sun.com/jsp/jstl/functions" prefix="fn"%>

二、自定义函数

jstl自带的标签有时候可能满足不了我们的需求,这时我们就要用到自定义函数。
新建一个类,定义好所需要的方法:

Java代码:

  1. package com.uisk.util;     
  2.     
  3. /** 
  4. * 定义EL自定义函数 
  5. * 
  6. */    
  7. public class UFunction {     
  8.     
  9.     /** 
  10.       * 获取一个字符串的长度 
  11.       * 
  12.       * @param str 
  13.       * @return int 
  14.       */    
  15.     public static int getLen(String str) {     
  16.         return str.length();     
  17.      }     
  18.     
  19.     /** 
  20.       * 截取字符串 
  21.       * 
  22.       * @param str 
  23.       * @param start 
  24.       * @param end 
  25.       * @return String 
  26.       */    
  27.     public static String substr(String str, int start, int end) {     
  28.         return str.substring(start, end);     
  29.      }     
  30.     
  31.     /** 
  32.       * 两数相除获取整数结果 
  33.       *   
  34.       * @param first 
  35.       * @param second 
  36.       * @return int 
  37.       */    
  38.     public static int chufa(int first, int second) {     
  39.         return first / second;     
  40.      }     
  41. }    
package com.uisk.util;   

  

/**

* 定义EL自定义函数

*

*/  

public class UFunction {   

  

    /**

      * 获取一个字符串的长度

      *

      * @param str

      * @return int

      */  

    public static int getLen(String str) {   

        return str.length();   

     }   

  

    /**

      * 截取字符串

      *

      * @param str

      * @param start

      * @param end

      * @return String

      */  

    public static String substr(String str, int start, int end) {   

        return str.substring(start, end);   

     }   

  

    /**

      * 两数相除获取整数结果

      *  

      * @param first

      * @param second

      * @return int

      */  

    public static int chufa(int first, int second) {   

        return first / second;   

     }   

}  


 

再建一个tld文件放在WEB-INF目录下面对其进行配置:

 

  1. <?xml version="1.0" encoding="UTF-8"?>     
  2. <taglib xmlns="http://java.sun.com/xml/ns/j2ee"    
  3.      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  4.      xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"    
  5.      version="2.0">     
  6.      <tlib-version>1.0</tlib-version>     
  7.      <short-name>len</short-name>     
  8.      <function>     
  9.          <description>calculate string length</description><!-- 对这个EL方法的描述   -->     
  10.          <name>getLen</name><!-- 调用EL方法的名称 -->     
  11.          <function-class>com.cw.common.UFunction</function-class>     
  12.          <function-signature>     
  13.             int getLen(java.lang.String)     
  14.          </function-signature>     
  15.          <example>${len:getLen(str)}</example><!-- 例如 -->     
  16.      </function>     
  17.     
  18.      <function>     
  19.          <description>substring</description>     
  20.          <name>substr</name>     
  21.          <function-class>com.cw.common.UFunction</function-class>     
  22.          <function-signature>     
  23.              java.lang.String substr(java.lang.String,int,int)     
  24.          </function-signature>     
  25.      </function>     
  26.     
  27.      <function>     
  28.          <description>chufa</description>     
  29.          <name>chufa</name>     
  30.          <function-class>com.cw.common.UFunction</function-class>     
  31.          <function-signature>int chufa(int,int)</function-signature>     
  32.      </function>     
  33. </taglib>    
<?xml version="1.0" encoding="UTF-8"?>   

<taglib xmlns="http://java.sun.com/xml/ns/j2ee"  

     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  

     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"  

     version="2.0">   

     <tlib-version>1.0</tlib-version>   

     <short-name>len</short-name>   

     <function>   

         <description>calculate string length</description><!-- 对这个EL方法的描述   -->   

         <name>getLen</name><!-- 调用EL方法的名称 -->   

         <function-class>com.cw.common.UFunction</function-class>   

         <function-signature>   

            int getLen(java.lang.String)   

         </function-signature>   

         <example>${len:getLen(str)}</example><!-- 例如 -->   

     </function>   

  

     <function>   

         <description>substring</description>   

         <name>substr</name>   

         <function-class>com.cw.common.UFunction</function-class>   

         <function-signature>   

             java.lang.String substr(java.lang.String,int,int)   

         </function-signature>   

     </function>   

  

     <function>   

         <description>chufa</description>   

         <name>chufa</name>   

         <function-class>com.cw.common.UFunction</function-class>   

         <function-signature>int chufa(int,int)</function-signature>   

     </function>   

</taglib>  

 

最后进行调用测试:

  1. <%@ page language="java" pageEncoding="gbk"%>     
  2. <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%>  
  3. <%@ taglib uri="/WEB-INF/mytag.tld" prefix="myTag" %>     
  4.     
  5. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">     
  6. <html>     
  7.    <body>     
  8.      <c:set var="str" value="自定义函数,做一个截取字符串长度的测试"></c:set>     
  9.      字条串"${str}"的长度是${myTag:getLen(str)}<br/>     
  10.      字条串"${str}"截取前5个字符:${myTag:substr(str,0,5)}<br/>     
  11.     5除以3取整数是:${myTag:chufa(5,3) }     
  12.        
  13.    </body>     
  14. </html>    

你可能感兴趣的:(截取字符串)