读书人

自定义标签兑现字符串截取功能

发布时间: 2012-09-10 22:20:13 作者: rapoo

自定义标签实现字符串截取功能
第一步:编写java代码继承SimpleTagSupport类并重写父类的方法doTag(),该方法是关键,然后定义2个属性str(需要被截取的字符串),len(需要截取的长度。

package tag;import java.io.IOException;import java.io.UnsupportedEncodingException;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.SimpleTagSupport;public class MyTag extends SimpleTagSupport {private String str;private int len;public String getStr() {return str;}public void setStr(String str) {this.str = str;}public int getLen() {return len;}public void setLen(int len) {this.len = len;}@Overridepublic void doTag() throws JspException, IOException {JspWriter out = this.getJspContext().getOut();StringBuilder sb = new StringBuilder();String temp = subStr(str,len);sb.append(temp);out.write(sb.toString());System.out.println(sb.toString());}public static void main(String[] args) {try {System.out.println(new MyTag().subStr("a的a飞z好d吧d吗", 7));} catch (UnsupportedEncodingException e) {e.printStackTrace();}}/**     * 将给定的字符串按着给定的截取长度截取     * <br>     * 注意一个汉字占2个字节     * @param str     * @param subSLength     * @return 截取后的字符串     * @throws UnsupportedEncodingException      */     public String subStr(String str, int subSLength)             throws UnsupportedEncodingException{        if (str == null)             return "";         else{            int tempSubLength = subSLength;//截取字节数           String subStr = str.substring(0, str.length()<subSLength ? str.length() : subSLength);//截取的子串             int subStrByetsL = subStr.getBytes("GBK").length;//截取子串的字节长度             // 说明截取的字符串中包含有汉字             while (subStrByetsL > tempSubLength){                 subStr = str.substring(0, --subSLength);                 subStrByetsL = subStr.getBytes("GBK").length;           }             return subStr;        }   }}


第二步:编写tag.tld文件并将其放在WEB-INF目录下,如下所示

<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/javaee"    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"    version="2.1">      <tlib-version>1.0</tlib-version>  <short-name>mytag</short-name>  <uri>/WEB-INF/tag.tld</uri>  <tag>    <name>page</name>    <tag-class>tag.MyTag</tag-class>    <body-content>empty</body-content>    <attribute>        <name>str</name>        <required>true</required>        <rtexprvalue>true</rtexprvalue>        <type>java.lang.String</type>    </attribute>    <attribute>        <name>len</name>        <required>true</required>        <rtexprvalue>true</rtexprvalue>        <type>java.lang.Integer</type>    </attribute>  </tag></taglib>


第三步:使用标签,如下

<%@ page language="java" pageEncoding="utf-8"%><%@ taglib uri="/WEB-INF/tag.tld" prefix="mytag"%><%String path = request.getContextPath();String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/";%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html>  <head>    <base href="<%=basePath%>">        <title>首页</title>  </head>    <body>    <mytag:page len="8" str="a的a飞z好d吧d吗"></mytag:page>  </body></html>

读书人网 >编程

热点推荐