日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

tld自定义标签

發布時間:2024/9/19 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 tld自定义标签 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

tld自定義標簽

1.簡介

? tld(taglib description)是自定義標簽,自定義標簽一般用于jsp頁面。使用tld可以在JSP頁面中使用自己定義的標簽。這樣你就可以在JSP頁面用,除了使用JSP標準標簽庫(JSTL)外,還可以使用自己自定義的標簽庫??纯磩e是怎么說的:

自定義標簽是用戶定義的JSP語言元素。當JSP頁面包含一個自定義標簽時將被轉化為servlet,標簽轉化為對被 稱為tag handler的對象的操作,即當servlet執行時Web container調用那些操作。

JSP標簽擴展可以讓你創建新的標簽并且可以直接插入到一個JSP頁面。 JSP 2.0規范中引入Simple Tag Handlers來編寫這些自定義標記。

你可以繼承SimpleTagSupport類并重寫的doTag()方法來開發一個最簡單的自定義標簽。

來自:菜鳥編程(https://www.runoob.com/jsp/jsp-custom-tags.html)

2.了解標簽結構

標簽有一下結構:標簽體,標簽名,標簽屬性

<MyTag></MyTag> <MyTag>MyTag body</MyTag> <MyTag 標簽屬性="xxx"/>

3.編寫自定義標簽

編寫自定義標簽分三步走:

  • 編寫標簽處理類
  • 編寫標簽描述符
  • 導入并使用自定義標簽

3.1編寫標簽處理類

要自定義標簽就需要,編寫標簽的處理類,處理類決定了標簽的功能。自定義標簽先繼承SimpleTagSupport類,并重寫其中的doTag()方法。doTag()方法用于編寫標簽的執行體,其方法的定義來自于 interface SimpleTag。

SimpleTagSupport主要有以下方法:

  • public void doTag() 標簽方法體
  • public void setParent(JspTag parent) 標簽鑲嵌是會調用的方法,就是給標簽設置父標簽(一般不重寫)
  • public JspTag getParent() 獲取父標簽
  • public void setJspContext(JspContext pc) 存儲提供的JSP上下文jspContext對象
  • protected JspContext getJspContext() 獲取JspContext
  • public void setJspBody(JspFragment jspBody) 設置標簽
  • protected JspFragment getJspBody() 獲取標簽

我們只需要重點關注doTag(),getJspBody(),和getJspContext() 方法。

例子一:只針對標簽的功能

public class HelloTag extends SimpleTagSupport {//重寫doTag()方法,doTag()方法用于編寫標簽的執行體public void doTag() throws JspException, IOException {//使用了getJspContext()方法來獲取當前的JspContext對象JspWriter out = getJspContext().getOut();//打印out.println("Hello Custom Tag!");} }

例子二:將標簽體打印到JSP頁面中(這里用到了標簽體)

注釋:invoke方法可以控制是否執行和輸出標簽體的內容、是否迭代執行標簽體的內容或對標簽體的執行結果進行修改后再輸出??梢允褂胕nvoke方法多次執行和輸出標簽體的內容。

public class HelloTag extends SimpleTagSupport {StringWriter sw = new StringWriter();public void doTag() throws JspException, IOException{//獲取標簽體,如(<sd>我是標簽體</sd>)getJspBody().invoke(sw);//getJspContext()方法來獲取當前的JspContext對象,并打印標簽體到頁面中getJspContext().getOut().println(sw.toString());} }

例子三:從屬性和標簽體中獲取信息

public class HelloTag extends SimpleTagSupport {private String message;//自定義的標簽屬性必須提供set方法,將通過set方法傳值public void setMessage(String msg) {this.message = msg;}StringWriter sw = new StringWriter();public void doTag() throws JspException, IOException{if (message != null) {/* 從屬性中使用消息 */JspWriter out = getJspContext().getOut();out.println( "標簽屬性是:"+ message);}else {/* 從內容體中使用消息 */getJspBody().invoke(sw);getJspContext().getOut().println("標簽體是:"+sw.toString());}}}

3.2 編寫標簽描述符

編寫好標簽處理類我們就可以開始制作標簽啦,先在WEB-INF/目錄下創建mytag.tld文件。

<?xml version="1.0" encoding="UTF-8" ?> <taglib><!--標簽庫的描述信息--><tlib-version>1.0</tlib-version><jsp-version>2.0</jsp-version><short-name>Example TLD</short-name><!--自定義的標簽--><tag><!--標簽名--><name>Hello</name><!--對應的處理類--><tag-class>com.runoob.HelloTag</tag-class><!--處理類中定義的變量,因為沒有所以empty--><body-content>empty</body-content></tag><!--如果有自定義標簽屬性的,要添加attribute<tag> <name>Hello</name><tag-class>com.runoob.HelloTag</tag-class<body-content>scriptless</body-content><attribute><name>message</name></attribute></tag> --> </taglib>

3.3導入并使用自定義標簽

最后一部就是導入標簽庫了,這個十分簡單只需要使用 <%@ taglib prefix=“ex” uri=“WEB-INF/custom.tld”%> 導入即可。

<!--prefix引用前綴,uri指定引用的標簽庫--> <%@ taglib prefix="ex" uri="WEB-INF/mytag.tld"%> <html><head><title>A sample tag</title></head><body><ex:Hello/><!--根據實際的需要,可以利用標簽體和標簽屬性能豐富標簽的功能--></body> </html>

總結

以上是生活随笔為你收集整理的tld自定义标签的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。