例如我們在一個html文檔中寫一個自定義的標籤
<%@taglib uri="" prefix="c1"%> //uri是一個命名空間,perfix是一個前綴
在html的正文中我們寫上 <c1: msg="" qty=""> //c1就是這個標籤的標籤名,msg和qty是屬性
我們要定義這個標籤就要先些上這個標籤的類,這個類要繼承SimpleTagSupport
public class HelloTag extends SimpleTagSupport{ //寫上屬性,要與標籤中的屬性一一對應,而且一定要寫上set方法 private String msg; private int qty; public void setMsg(Strig msg){ this msg=msg; } public void setQty(int qty){ this qty=qty; } //按住右鍵找到source 找到override 找到dotag方法,將其覆蓋 public void doTag() throws JspException, IOException { PageContext page=(PageContext)getJspContext();//得pageContext得天下 JspWriter out=page.getOut();//從而獲得輸出流 //下面是具體業務邏輯 for(int i=0;i<100;i++){ out.println("hello world"); } } } }
最後寫個描述文件(相當與在自定義的標籤與類定義之間的一個橋樑的作用)
在WEB-INF下建一個mytag.tld的描述性文件(可以參照c.tld)
<?xml?>描述文件
<taglib ssssss>
<tlib-version>1.1
<short-name>c1 //這就是個前綴
<uri>test //命名空間
<tag>
<name>hello</name>
<tag-class>tag.HelloTag</tag-class>
<bady-content>empty</bady-content>
//有三個值empty 沒有標籤體;scriptless 可以有標籤體,但是標籤體的內容不能有java代碼(《% %》 //《%= %》《%! %》);jsp 有標籤體,可以寫java代碼,但是隻有複雜有,我們學的簡單沒有這個了
<attribute>
<name>
<required>true</required>//表示必須要賦值
<rtexprvalue>true //表示可以動態賦值,可以用el表達式來賦值
</attribute>
</tag>
</taglib>
自定義標籤的總結:
1,要寫上一個自定義標籤的類
2,要寫一個在WEB-INF下寫一個對這個標籤的描述性文件
3,就可以在html中使用了