1传统标签接口关系:                                  

2功能简介                                                  

3代码测试                                                  

  1.标签体内容控制 StartTag

package com.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport; public class EvalBodyTag extends TagSupport {
private boolean show;
public void setShow(boolean show){
this.show = show; }
public int doStartTag() throws JspException {
// TODO Auto-generated method stub
if(show==true)
return super.EVAL_BODY_INCLUDE;
else
return super.SKIP_BODY;
} }

EvalBodyTag

  2.标签结束后的处理  EndTag

package com.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.TagSupport; public class ShowPageTag extends TagSupport {
private boolean show;
public void setShow(boolean show){
this.show = show;
}
@Override public int doEndTag() throws JspException {
System.out.println(show);
if(show==true)
return super.EVAL_PAGE;
else
return super.SKIP_PAGE;
}
@Override
public int doStartTag() throws JspException {
return super.EVAL_BODY_INCLUDE;
} }

ShowPageTag

  3. 标签内容处理完后--doAfterBody

package com.tag;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.IterationTag;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.tagext.TagSupport; public class RepeatTag extends TagSupport{ private int count;
public void setCount(int count){
this.count = count;
}
public int doAfterBody() throws JspException {
count--;
if(count>0)
return RepeatTag.EVAL_BODY_AGAIN;
else
return RepeatTag.SKIP_BODY;
} public int doStartTag() throws JspException {
return Tag.EVAL_BODY_INCLUDE;
} }

RepeatTag

 4. 内容格式化

package com.tag;

import java.io.IOException;

import javax.servlet.jsp.JspException;
import javax.servlet.jsp.tagext.BodyContent;
import javax.servlet.jsp.tagext.BodyTagSupport; public class BodyContentTag extends BodyTagSupport { @Override
public int doEndTag() throws JspException {
BodyContent body = this.getBodyContent();
String bc = body.getString();
bc = bc.toUpperCase();
try {
this.pageContext.getOut().write(bc);
} catch (IOException e) {
e.printStackTrace();
throw new RuntimeException(e);
}
return super.doStartTag(); } @Override
public int doStartTag() throws JspException {
return super.EVAL_BODY_BUFFERED;
} }

BodyContentTag

4 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">
<description>A tag library exercising SimpleTag handlers.</description>
<tlib-version>1.0</tlib-version>
<short-name>SimpleTagLibrary</short-name>
<uri>http://self-tag-with-hello</uri> <tag>
<name>helloWorld</name> <tag-class>com.tag.HelloWorldTag</tag-class>
<body-content>empty</body-content>
<attribute>
<name>name</name>
<required>true</required>
<rtexprvalue>true</rtexprvalue>
</attribute>
</tag> <tag>
<name>evalbody</name>
<tag-class>com.tag.EvalBodyTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>show</name>
<required>true</required>
</attribute> </tag> <tag>
<name>showpage</name>
<tag-class>com.tag.ShowPageTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>show</name>
<required>true</required>
</attribute> </tag> <tag>
<name>repeatbody</name>
<tag-class>com.tag.RepeatTag</tag-class>
<body-content>JSP</body-content>
<attribute>
<name>count</name>
<required>true</required>
</attribute> </tag>
<tag>
<name>changeContent</name>
<tag-class>com.tag.BodyContentTag</tag-class>
<body-content>JSP</body-content> </tag> </taglib>

MyTag

5页面结果展示                                           

最新文章

  1. DOM9大节点
  2. linux重启命令学习
  3. FreeIconMaker - 在线创建免费和时尚的图标
  4. (转)innerHTML、innerText和outerHTML、outerText的区别
  5. Python 的 List 要印出 中文 編碼
  6. Delphi中WideString类型如何转化成String类型
  7. 一个控制台贪吃蛇小游戏(wsad控制移动)
  8. poj2932 Coneology (扫描线)
  9. mysql常用操作命令
  10. jQuery 之 $.get、$.post、$.getJSON、$.ajax
  11. Jbpm工作流(一)
  12. springcloud(六):配置中心git示例
  13. 消息中间件系列三:使用RabbitMq原生Java客户端进行消息通信(消费者(接收方)自动确认模式、消费者(接收方)自行确认模式、生产者(发送方)确认模式)
  14. HttpClient学习记录-系列1(tutorial)
  15. Android 使用自定义字体
  16. 微软职位内部推荐-Software Development Engineer II_Commerce
  17. java解数独
  18. vue-cli构建项目 npm run build后应该怎么运行在本地查看效果
  19. p2p网贷3种运营模式
  20. Codeforces 9D How many trees? 【计数类DP】

热门文章

  1. Spring Boot学习——统一异常处理
  2. os模块 文件操作
  3. C#图解教程学习笔记——接口
  4. Day 26 python 正则表达式
  5. Process &#39;command &#39;D:\IDE\SDK\build-tools\28.0.3\aapt.exe&#39;&#39; finished with non-zero exit value 1问题分析解决
  6. AC日记——石子归并 51nod 1021
  7. AC日记——[HAOI2007]理想的正方形 P2216
  8. CSS定位与布局:浮动
  9. Blocks的申明调用与Queue当做锁的用法
  10. 15 THINGS ALL GIRLS SHOULD KNOW ABOUT THEIR VAGINA