這篇文章主要講解了“JSP怎么自定義標簽”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JSP怎么自定義標簽”吧!
接下來,我們想創建一個自定義標簽叫作,標簽格式為:
要創建自定義的JSP標簽,你首先必須創建處理標簽的Java類。所以,讓我們創建一個HelloTag類,如下所示:
package com.runoob; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; public class HelloTag extends SimpleTagSupport { public void doTag() throws JspException, IOException { JspWriter out = getJspContext().getOut(); out.println("Hello Custom Tag!"); } }
以下代碼重寫了doTag()方法,方法中使用了getJspContext()方法來獲取當前的JspContext對象,并將”Hello Custom Tag!”傳遞給JspWriter對象。
編譯以上類,并將其復制到環境變量CLASSPATH目錄中。最后創建如下標簽庫:webapps\ROOT\WEB-INF\custom.tld。
1.0 2.0 Example TLD Hello com.runoob.HelloTag empty
接下來,我們就可以在JSP文件中使用Hello標簽:
"ex" uri="WEB-INF/custom.tld"%> A sample custom tag
以上程序輸出結果為:
Hello Custom Tag!
你可以像標準標簽庫一樣在標簽中包含消息內容。如我們要在我們自定義的Hello中包含內容,格式如下:
This is message body
我們可以修改標簽處理類文件,代碼如下:
package com.runoob; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; public class HelloTag extends SimpleTagSupport { StringWriter sw = new StringWriter(); public void doTag() throws JspException, IOException { getJspBody().invoke(sw); getJspContext().getOut().println(sw.toString()); } }
接下來我們需要修改TLD文件,如下所示:
1.0 2.0 Example TLD with Body Hello com.runoob.HelloTag scriptless
現在我們可以在JSP使用修改后的標簽,如下所示:
"ex" uri="WEB-INF/custom.tld"%> A sample custom tag This is message body
以上程序輸出結果如下所示:
This is message body
你可以在自定義標準中設置各種屬性,要接收屬性,值自定義標簽類必須實現setter方法, JavaBean 中的setter方法如下所示:
package com.runoob; import javax.servlet.jsp.tagext.*; import javax.servlet.jsp.*; import java.io.*; public class HelloTag extends SimpleTagSupport { private String message; 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()); } } }
屬性的名稱是”message”,所以setter方法是的setMessage()?,F在讓我們在TLD文件中使用的元素添加此屬性:
1.0 2.0 Example TLD with Body Hello com.runoob.HelloTag scriptless message
現在我們就可以在JSP文件中使用message屬性了,如下所示:
"ex" uri="WEB-INF/custom.tld"%> A sample custom tag "This is custom tag" />
以上實例數據輸出結果為:
This is custom tag
你還可以包含以下屬性:
屬性 | 描述 |
---|---|
name | 定義屬性的名稱。每個標簽的是屬性名稱必須是唯一的。 |
required | 指定屬性是否是必須的或者可選的,如果設置為false為可選。 |
rtexprvalue | 聲明在運行表達式時,標簽屬性是否有效。 |
type | 定義該屬性的Java類類型 。默認指定為 String |
description | 描述信息 |
fragment | 如果聲明了該屬性,屬性值將被視為一個 JspFragment。 |
以下是指定相關的屬性實例:
..... attribute_name false type>java.util.Datetype> false .....
如果你使用了兩個屬性,修改TLD文件,如下所示:
..... attribute_name1 false type>java.util.Booleantype> false attribute_name2 true type>java.util.Datetype> .....
感謝各位的閱讀,以上就是“JSP怎么自定義標簽”的內容了,經過本文的學習后,相信大家對JSP怎么自定義標簽這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。