自定義標(biāo)簽開(kāi)發(fā)整理 從jsp1.1開(kāi)始就可以在jsp頁(yè)面中使用自定義標(biāo)簽了,使用自定義標(biāo)簽不但可以實(shí)現(xiàn)代碼重用,而且可以使jsp代碼更簡(jiǎn)潔。Jsp2.0的標(biāo)簽擴(kuò)展API中又增加了SimpleTag接口和其實(shí)現(xiàn)類SimpleTagSupport。 標(biāo)簽擴(kuò)展API層次結(jié)構(gòu): TLD文件元素詳解: 每個(gè)自定義標(biāo)簽都必須在TLD文件中聲明,TLD文件只不過(guò)是一個(gè)XML文件。根元素是<taglib>,它包含一個(gè)或者多個(gè)<tag>標(biāo)簽,該元素用來(lái)聲明定制標(biāo)簽。<taglib>元素中只有<tlib-version>元素是必須的,其他都是可選的。 TLD文件中的元素
<tag>元素的子元素
<attribute>的子元素
實(shí)例(繼承SimpleTagSupport類方式): 編寫(xiě)一個(gè)DateTag標(biāo)簽,輸出系統(tǒng)時(shí)間。<c1:date/>,輸出的格式:2011年11月9日 step1: 寫(xiě)一個(gè)java類,繼承SimpleTagSupport類 step2: override doTag()方法,在該方法里,實(shí)現(xiàn)相應(yīng)的處理邏輯 1 package mytag; 2 import java.io.IOException; 3 import java.text.SimpleDateFormat; 4 import java.util.Date; 5 import javax.servlet.jsp.JspException; 6 import javax.servlet.jsp.JspWriter; 7 import javax.servlet.jsp.PageContext; 8 import javax.servlet.jsp.tagext.SimpleTagSupport; 9 10 public class DateTag extends SimpleTagSupport{ 11 @Override 12 public void doTag() throws JspException, IOException { 13 PageContext ctx = (PageContext)getJspContext(); 14 JspWriter out = ctx.getOut(); 15 SimpleDateFormat sdf = new SimpleDateFormat("yyyy年MM月dd日"); 16 out.println(sdf.format(new Date())); 17 } 18 } step3: 在.tld文件當(dāng)中,描述該標(biāo)簽 1 <?xml version="1.0" encoding="UTF-8" ?> 2 <taglib xmlns="http://java./xml/ns/j2ee" 3 xmlns:xsi="http://www./2001/XMLSchema-instance" 4 xsi:schemaLocation="http://java./xml/ns/j2ee http://java./xml/ns/j2ee/web-jsptaglibrary_2_0.xsd" 5 version="2.0"> 6 <tlib-version>1.1</tlib-version> 7 <short-name>c1</short-name> 8 <uri>http://www./mytag1</uri> 9 <tag> 10 <name>date</name> 11 <tag-class>mytag.DateTag</tag-class> 12 <body-content>empty</body-content> 13 </tag> 14 </taglib> step4: 使用taglib導(dǎo)入標(biāo)簽(jsp中)
1 <%@taglib prefix="c1" uri="http://www./mytag1" %> 2 <c1:date/>
|
|