溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JSP怎么自定義標簽

發布時間:2022-01-29 11:44:07 來源:億速云 閱讀:597 作者:zzz 欄目:開發技術

這篇文章主要講解了“JSP怎么自定義標簽”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“JSP怎么自定義標簽”吧!

JSP怎么自定義標簽

創建”Hello”標簽

接下來,我們想創建一個自定義標簽叫作,標簽格式為:


要創建自定義的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怎么自定義標簽這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

jsp
AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女