标签:
标签一般执行顺序:doStartTag()->doAfterBodyTag()->doEndTag()->执行下面的网页
toUpperTag.java import javax.servlet.jsp.JspException; import javax.servlet.jsp.tagext.BodyContent; import javax.servlet.jsp.tagext.BodyTagSupport; public class toUpperTag extends BodyTagSupport { private static final long serialVersionUID = 1L; // 属性 private String var; // 标签开始时调用的处理方法 @Override public int doStartTag() throws JspException { // 表示需要处理标签体 return EVAL_BODY_BUFFERED; } @Override public int doAfterBody() throws JspException { // 取得标签体对象 BodyContent body = getBodyContent(); // 取得标签体的字符串内容 String content = body.getString(); // 清除标签体中的内容 body.clearBody(); // 将内容转换成大写 content = content.toUpperCase(); // 在pageContext对象中保存变量 this.pageContext.setAttribute(var, content); // 结束对标签体的处理 return SKIP_BODY; } public String getVar() { return var; } public void setVar(String var) { this.var = var; } } xy-tags.tld <?xml version="1.0" encoding="UTF-8"?> <taglib version="2.1" 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 web-jsptaglibrary_2_1.xsd"> <tlib-version>1.0</tlib-version> <short-name>xyTag</short-name> <tag> <name>touppercase</name> <tag-class>cn.xy.myTag.toUpperTag</tag-class> <body-content>tagdependent</body-content> <variable> <name-from-attribute>var</name-from-attribute> <variable-class>java.lang.String</variable-class> <scope>AT_BEGIN</scope> </variable> <attribute> <name>var</name> <required>true</required> </attribute> </tag> </taglib> 该文件可以放在WEB-INF文件夹下。 xy.jsp <%@ taglib uri="/WEB-INF/xy-tags.tld" prefix="xy"%> <html> <head> <base href="<%=basePath%>"> </head> <body> <xy:touppercase var="result">abcdefg</xy:touppercase><br> 结果为<%=result%> | ${ result } | ${pageScope.result } </body> </html> //当然也可以将大写后的结果直接输出,修改对应的代码如下: public class toUpperTag extends BodyTagSupport { private static final long serialVersionUID = 1L; // 属性 private String var; // 标签开始时调用的处理方法 @Override public int doStartTag() throws JspException { // 表示需要处理标签体 return EVAL_BODY_BUFFERED; } @Override public int doAfterBody() throws JspException { try { // 输出 JspWriter out = bodyContent.getEnclosingWriter(); // 取得标签体对象 BodyContent body = getBodyContent(); // 取得标签体的字符串内容 String content = body.getString(); // 清除标签体中的内容 body.clearBody(); // 将内容转换成大写 content = content.toUpperCase(); // 输出 out.print(content); // 清除 body.clear(); } catch (Exception e) { e.printStackTrace(); } // 结束对标签体的处理 return SKIP_BODY; } public String getVar() { return var; } public void setVar(String var) { this.var = var; } } <body> <xy:touppercase var="result">abcdefg</xy:touppercase> </body> //实现标签不仅仅可以用这种方法,还有很多种方法,请读者查阅。 转自网络 自己学习 共同努力
标签:
原文地址:http://www.cnblogs.com/FacingSun/p/4424402.html