heardyTag.tld <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.1//EN" "http://java.sun.com/j2ee/dtds/web-jsptaglibrary_1_1.dtd"> <taglib> <tlibversion>1.0</tlibversion> <jspversion>1.1</jspversion> <shortname>page</shortname> <tag> <name>hello</name> <tagclass>heardy.MyTag</tagclass> <bodycontent>JSP</bodycontent> <attribute> <name>maxlength</name> <required>false</required><!-- 是否为可选属性 --> <rtexprvalue>true</rtexprvalue><!-- 是否接受JSP表达示计算结果 --> </attribute> </tag> </taglib> MyTag.java package heardy; import java.io.IOException; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.BodyTagSupport; import javax.servlet.jsp.tagext.TagSupport; public class MyTag extends BodyTagSupport { /** * */ private static final long serialVersionUID = 167634601069545267L; private String maxlength = "10"; private String info; public String getMaxlength() { return maxlength; } public void setMaxlength(String maxlength) { this.maxlength = maxlength; } public String getInfo() { return info; } public void setInfo(String info) { this.info = info; } @Override public int doEndTag() throws JspException { JspWriter out = pageContext.getOut(); // pageContext对象以被容器初始化 try { out.print(getInfo()); } catch (IOException e) { e.printStackTrace(); } return TagSupport.EVAL_PAGE; // 继续处理其他页面内容 } @Override public int doStartTag() throws JspException { try { pageContext.getOut().print(""); } catch (IOException e) { e.printStackTrace(); } return TagSupport.EVAL_BODY_AGAIN; // 标签开始要处理标签对中内容 } @Override public int doAfterBody() throws JspException { if (bodyContent.getString().length() > Integer.parseInt(getMaxlength() .trim())) setInfo("<div title=/"" + bodyContent.getString() + "/">" + bodyContent.getString().substring(0, Integer.parseInt(getMaxlength().trim())) + "...</div>"); else { setInfo("<div>" + bodyContent.getString() + "</div>"); } return TagSupport.SKIP_BODY; } } index.jsp <%@ page language="java" pageEncoding="UTF-8"%> <%@ taglib uri="/WEB-INF/heardyTag.tld" prefix="heardy"%> <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <title>My JSP 'index' starting page</title> <meta http-equiv="pragma" content="no-cache"> <meta http-equiv="cache-control" content="no-cache"> <meta http-equiv="expires" content="0"> <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> <meta http-equiv="description" content="This is my page"> </head> <body> <heardy:hello maxlength="5">after</heardy:hello> <heardy:hello maxlength="10">afterafterafterafterafter</heardy:hello> <heardy:hello maxlength="5">这个比较长需要截取</heardy:hello> <heardy:hello maxlength="5">af</heardy:hello> </body> </html> 可以不指定maxlength长度 默认是10