使用JSTL在JSP页面截取字符串
1、使用C标签和fn标签
需要引用的标签库:
截取方法:
2、使用S标签:
需要导入的标签库:
<%@ taglib prefix="s" uri="/struts-tags" %>
截取方法:
3、自定义JSTL标签:
首先自定义一个java类:UFunction.java
/**
* 定义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 getResult(int first,int second){
return first/second;
}
}
然后在WEB-INF下面建立一个tld文件:myTag.tld
<?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>get the string length</description><!-- 对这个EL方法进行描述 --> <name>getLen</name><!-- 调用El方法的名字 --> <function-class>com.SSHED.util.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.SSHED.util.UFunction</function-class> <function-signature>java.lang.String substr(java.lang.String,int,int)</function-signature> </function> <function> <description>getResult</description> <name>getResult</name> <function-class>com.SSHED.util.UFunction</function-class> <function-signature>int getResult(int,int)</function-signature> </function> </taglib>
页面测试:
先导入需要的标签库:
截取方法:
期间遇到的问题:
org.apache.jasper.JasperException:XXX.jsp(64,62) equal symbol expected
是由于单引号和双引号的混乱使用导致的。
解决办法:
将双引号里面的双引号改成单引号,单引号里面的双引号该成单引号。