先看一下SimpleTag的生命周期
1:每次遇到标签时,容器构造一个SimpleTage的实例,并且这个构造方法没有参数。和经典的标签是一样的,SimpleTag不能进行 缓冲,故不能重用,每次都需要构造新的实例。
2:调用民构造方法后,就用setJspContext()和setParent()方法,只有这个标签在另一个标签内时,才调用setParent()方法。
3:容器调用每个属性的setter方法以设置这些属性的值。
4:如果存在Body,那么就使用setJspBody方法设置这个标签的标签体。
5:容器调用doTag方法,所有的标签的逻辑,迭代和Body计算都在这个方法中。
6:当doTag方法返回时,所有参数都被锁定。
HelloWorld
还是从HelloWorld开始,标签需要实现SimpleTag接口。
自定义标签之  SimpleTag的开发package eflylab;
自定义标签之  SimpleTag的开发
自定义标签之  SimpleTag的开发
import javax.servlet.jsp.JspException;
自定义标签之  SimpleTag的开发
import javax.servlet.jsp.tagext.SimpleTagSupport;
自定义标签之  SimpleTag的开发
import java.io.IOException;
自定义标签之  SimpleTag的开发
可以看出,这个标签的作用就是输出一个表格,表格中间带有HelloWorld的字样。
下面是描述文件中的声明
自定义标签之  SimpleTag的开发 <tag>
自定义标签之  SimpleTag的开发    
<description>Outputs Hello, World</description>
自定义标签之  SimpleTag的开发        
<name>helloWorld</name>
自定义标签之  SimpleTag的开发    
<tag-class>eflylab.HelloWorldSimpleTag</tag-class>
自定义标签之  SimpleTag的开发    
<body-content>empty</body-content>
自定义标签之  SimpleTag的开发
</tag>
测试代码
>
运行如下:
自定义标签之  SimpleTag的开发 

实例开发:
上面是简单的HelloWorld,下面写一个简单的实例这个标签直接操作文件系统,它的使用就像是<img src=""/>HTML标签一样方便。
自定义标签之  SimpleTag的开发package eflylab;
自定义标签之  SimpleTag的开发
自定义标签之  SimpleTag的开发
import javax.servlet.jsp.JspException;
自定义标签之  SimpleTag的开发
import javax.servlet.jsp.tagext.SimpleTagSupport;
自定义标签之  SimpleTag的开发
import java.io.*;
自定义标签之  SimpleTag的开发
FileTag和HelloWorldTag之类的标签其实没有什么大的区别,只是它的业务逻辑不同而已。FileTag直接操作文件系统,并且从文件系统中读取内容显示到table中。和经典的标签一样,SimpleTag也可以有属性。FileTag有一个FileName的属性,这个属性用于表示文件的路径和名字。
描述如下:
自定义标签之  SimpleTag的开发 <tag>    
自定义标签之  SimpleTag的开发        
<name>file</name>
自定义标签之  SimpleTag的开发        
<tag-class>eflylab.FileTag</tag-class>
自定义标签之  SimpleTag的开发        
<body-content>empty</body-content>
自定义标签之  SimpleTag的开发        
<attribute>
自定义标签之  SimpleTag的开发              
<name>fileName</name>
自定义标签之  SimpleTag的开发              
<required>true</required>
自定义标签之  SimpleTag的开发              
<rtexprvalue>true</rtexprvalue>
自定义标签之  SimpleTag的开发          
</attribute>
自定义标签之  SimpleTag的开发     
</tag> 
测试代码:
运行 :
自定义标签之  SimpleTag的开发

相关文章: