`

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

阅读更多
第一步:编写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;
	}

	@Override
	public 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>
分享到:
评论

相关推荐

    CMS V4.6.2 Access版源码20131011

    2.标签加入字符串真实长度截取功能 3.标签加入缩略图功能可获取带缩略图的字段 4.修改4.6.1内容列表排序bug 5.修改分页函数 6.优化模型内容列表页多列排序功能 7.完善论坛插件功能。 8.完善B2C商城插件功能。

    PlugNT CMS v4.6.2

    标签加入字符串真实长度截取功能3.标签加入缩略图功能可获取带缩略图的字段4.修改4.6.1内容列表排序bug5.修改分页函数6.优化模型内容列表页多列排序功能7.完善论坛插件功能。8.完善B2C商城插件功能。默认后台登录名...

    ESPCMS易思企业网站管理系统 v4.3.11.01.14 UTF8.rar

    2、增加了模板cuthtml标签,用于HTML字符串的截取,可以清除HTML代码,也可以自定清除指定的HTML标签; 3、增加了js内容输出,可以远程输出内容,会员登陆窗口、订购状态、文章点击数等...其中内容输出可用于第三方...

    PHP函数库,PHP函数大全,PHP函数实例,PHP函数手册,PHP5函数库实例

    截取字符串中两个特定唯一字符之间的内容 截取指定长度字符串 折线图 按照比例改变图片大小(非生成缩略图) 收藏主页 数据验证类 数组转换成XML格式 日期计算 是否为电子邮件格式 柱形统计图 检查是否为一...

    delphi 开发经验技巧宝典源码

    0177 截取指定位置的字符串 115 0178 清除字符串中指定的字符 115 0179 如何实现文本的加密与解密 116 0180 提取字符串中指定子字符串后的字符串 117 0181 替换指定的字符串 117 0182 在文本中删除指定的...

    delphi 开发经验技巧宝典源码06

    0177 截取指定位置的字符串 115 0178 清除字符串中指定的字符 115 0179 如何实现文本的加密与解密 116 0180 提取字符串中指定子字符串后的字符串 117 0181 替换指定的字符串 117 0182 在文本中删除指定的...

    批处理实用教程

    2、字符串截取 第六章 if命令讲解 第一种用法:IF [NOT] ERRORLEVEL number command 第二种用法:IF [NOT] string1==string2 command 第三种用法:IF [NOT] EXIST filename command 第四种用法:IF增强的用法 ...

    批处理基础 FOR命令详解 批处理中的变量 set命令详解 if命令讲解 DOS编程高级技巧

    * 用 7-ZIP 实现命令行压缩和解压功能:使用7-ZIP命令来实现命令行压缩和解压功能。 * 调用 VBScript 程序:使用VBScript命令来实现自动化操作。 * 将批处理转化为可执行文件:使用工具将批处理文件转化为可执行文件...

    vc++ 应用源码包_1

    基于MFC和STL平台的字符串类,可以实现在快速字符串搜索。 enum_display_modes_demo.zip enum_display_modes_src.zip 列出所有的显示模式并列表出来,通过单击列表来改变显示分辨率。 iconbutton_demo.zip ...

    vc++ 应用源码包_2

    基于MFC和STL平台的字符串类,可以实现在快速字符串搜索。 enum_display_modes_demo.zip enum_display_modes_src.zip 列出所有的显示模式并列表出来,通过单击列表来改变显示分辨率。 iconbutton_demo.zip ...

    vc++ 应用源码包_6

    基于MFC和STL平台的字符串类,可以实现在快速字符串搜索。 enum_display_modes_demo.zip enum_display_modes_src.zip 列出所有的显示模式并列表出来,通过单击列表来改变显示分辨率。 iconbutton_demo.zip ...

    vc++ 应用源码包_5

    基于MFC和STL平台的字符串类,可以实现在快速字符串搜索。 enum_display_modes_demo.zip enum_display_modes_src.zip 列出所有的显示模式并列表出来,通过单击列表来改变显示分辨率。 iconbutton_demo.zip ...

    vc++ 应用源码包_3

    基于MFC和STL平台的字符串类,可以实现在快速字符串搜索。 enum_display_modes_demo.zip enum_display_modes_src.zip 列出所有的显示模式并列表出来,通过单击列表来改变显示分辨率。 iconbutton_demo.zip ...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例112 解决用substr()函数对中文字符串截取时出现乱码的问题 143 实例113 字符串与HTML标记相互转换 144 实例114 运用PHP 5.0新型字符串输出XML数据 145 实例115 判断字符串中是否存在指定子串 146 2.9 正则表达式...

    vc++ 开发实例源码包

    内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件与文件夹属性操作、文件与文件夹系统操作、系统控制操作、程序...

    C#编程经验技巧宝典

    76 &lt;br&gt;0111 计算字符串中子字符串出现的次数 76 &lt;br&gt;0112 获得字符串中大写字母的个数 77 &lt;br&gt;0113 获得某字符在字符串中最后出现的位置 78 &lt;br&gt;0114 如何找出字符串中某一字符的所有位置 78...

    EXCEL集成工具箱V8.0完整增强版(精简)

    在窗体中双击文本字符串尾即可实现自动选定文本并自动复制功能。本工具较同类转换工具准确率达100%。 【背景颜色】 提供可视化的可选择着色方式的背景着色功能,默认启用智能着色。 【文件批量改名】 功能完善的...

    EXCEL集成工具箱V6.0

    在窗体中双击文本字符串尾即可实现自动选定文本并自动复制功能。本工具较同类转换工具准确率达100%。 【背景颜色】 提供可视化的可选择着色方式的背景着色功能,默认启用智能着色。 【文件批量改名】 功能完善的...

Global site tag (gtag.js) - Google Analytics