1. 程式人生 > >JSP自定義標籤詳細講解

JSP自定義標籤詳細講解

一、基本概念:

  1.標籤(Tag):

  標籤是一種XML元素,通過標籤可以使JSP網頁變得簡潔並且易於維護,還可以方便地實現同一個JSP檔案支援多種語言版本。由於標籤是XML元素,所以它的名稱和屬性都是大小寫敏感的

  2.標籤庫(Tag library):

  由一系列功能相似、邏輯上互相聯絡的標籤構成的集合稱為標籤庫。

  3.標籤庫描述檔案(Tag Library Descriptor):

  標籤庫描述檔案是一個XML檔案,這個檔案提供了標籤庫中類和JSP中對標籤引用的對映關係。它是一個配置檔案,和web.xml是類似的。

  4.標籤處理類(Tag Handle Class):

  標籤處理類是一個Java類,這個類繼承了TagSupport或者擴充套件了SimpleTag介面,通過這個類可以實現自定義JSP標籤的具體功能

  二、自定義JSP標籤的格式:

  1.

  

  為了使到JSP容器能夠使用標籤庫中的自定義行為,必須滿足以下兩個條件:

  1)從一個指定的標籤庫中識別出代表這種自定義行為的標籤

  2)找到實現這些自定義行為的具體類

  第一個必需條件-找出一個自定義行為屬於那個標籤庫-是由標籤指令的字首(Taglib Directive's Prefix)屬性完成,所以在同一個頁面中使用相同字首的元素都屬於這個標籤庫。每個標籤庫都定義了一個預設的字首,用在標籤庫的文件中或者頁面中插入自定義標籤。所以,你可以使用除了諸如jsp,jspx,java,servlet,sun,sunw(它們都是在JSP白皮書中指定的保留字)之類的字首。  

  uri屬性滿足了以上的第二個要求。為每個自定義行為找到對應的類。這個uri包含了一個字串,容器用它來定位TLD檔案。在TLD檔案中可以找到標籤庫中所有標籤處理類的名稱

  2. 當web應用程式啟動時,容器從WEB-INF資料夾的目錄結構的META-INF搜尋所有以.tld結尾的檔案。也就是說它們會定位所有的TLD檔案。對於每個TLD檔案,容器會先獲取標籤庫的URI,然後為每個TLD檔案和對應的URI建立對映關係。

  在JSP頁面中,我們僅需通過使用帶有URI屬性值的標籤庫指令來和具體的標籤庫匹配

  三、自定義JSP標籤的處理過程:

  1.在JSP中引入標籤庫:

  

  2.在JSP中使用標籤庫標籤

  3.Web容器根據第二個步驟中的prefix,獲得第一個步驟中宣告的taglib的uri屬性值

  4.Web容器根據uri屬性在web.xml找到對應的元素 5.從元素中獲得對應的元素的值 6.Web容器根據元素的值從WEB-INF/目錄下找到對應的.tld檔案 7.從.tld檔案中找到與tagname對應的元素 8.湊元素中獲得對應的元素的值 9.Web容器根據元素的值建立相應的tag handle class的例項 10. Web容器呼叫這個例項的doStartTag/doEndTag方法完成相應的處理

  四、建立和使用一個Tag Library的基本步驟:

  1.建立標籤的處理類(Tag Handler Class)

  2.建立標籤庫描述檔案(Tag Library Descrptor File)

  3.在web.xml檔案中配置元素 4.在JSP檔案中引人標籤庫

  五、TagSupport類簡介:

  1.處理標籤的類必須擴充套件javax.servlet.jsp.TagSupport.

  2.TagSupport類的主要屬性:

  A.parent屬性:代表嵌套了當前標籤的上層標籤的處理類

  B.pageContex屬性:代表Web應用中的javax.servlet.jsp.PageContext物件

  3.JSP容器在呼叫doStartTag或者doEndTag方法前,會先呼叫setPageContext和setParent方法,設定pageContext和parent。因此在標籤處理類中可以直接訪問pageContext變數

  4.在TagSupport的構造方法中不能訪問pageContext成員變數,因為此時JSP容器還沒有呼叫

  setPageContext方法對pageContext進行初始化

  六、TagSupport處理標籤的方法:

  1.TagSupport類提供了兩個處理標籤的方法:

  public int doStartTag() throws JspException

  public int doEndTag() throws JspException

  2.doStartTag:但JSP容器遇到自定義標籤的起始標誌,就會呼叫doStartTag()方法。

  doStartTag()方法返回一個整數值,用來決定程式的後續流程。

  A.Tag.SKIP_BODY:表示?>…之間的內容被忽略

  B.Tag.EVAL_BODY_INCLUDE:表示標籤之間的內容被正常執行

  3.doEndTag:但JSP容器遇到自定義標籤的結束標誌,就會呼叫doEndTag()方法。doEndTag()方法也返回一個整數值,用來決定程式後續流程。

  A.Tag.SKIP_PAGE:表示立刻停止執行網頁,網頁上未處理的靜態內容和JSP程式均被忽略任何已有的輸出內容立刻返回到客戶的瀏覽器上。

  B.Tag_EVAL_PAGE:表示按照正常的流程繼續執行JSP網頁

  七、使用者自定義的標籤屬性:

  如果在標籤中還包含了自定義的屬性,那麼在標籤處理類中應該將這個屬性作為成員變數,並且分別提供設定和讀取屬性的方法。

  八、建立標籤處理類的步驟:

  1.建立包含JSP網頁靜態文字的檔案(即是要替換自定義JSP標籤的文字)

  2.在Web應用啟動時裝載靜態文字

  3.建立標籤處理類

  九、如何建立包含JSP網頁靜態文字的檔案:

  1.使用java.util.Properties類來存放要替換網頁中自定義JSP標籤的靜態文字

  2.Properties類代表了一系列屬性的集合,其例項既可以被儲存到流中,也可以從流中載入。這些文字以key/value的形式存放在WEB-INF目錄下,例如key=value,在屬性列表中這些key/value都是String型別的

  十、Properties類的常用API:

  1.setProperty(String key, String value):呼叫Hashtable類的put方法新增屬性

  2.getProperty(String key):獲取屬性列表中key對應的屬性值

  3.load(InputStream in):從輸入流物件InputStream中讀取屬性列表(Properties list)

  4.store(OutputStream out,String coMMent):使用適當的格式將屬性列表的屬性對寫入輸出流物件中,預設使用ISO-88590-1編碼格式,以行的方式處理輸入。屬性的key/value之間以”=、:”配對,以回車、換行分隔key/value配對。 

相關推薦

JSP定義標籤詳細講解

一、基本概念:   1.標籤(Tag):   標籤是一種XML元素,通過標籤可以使JSP網頁變得簡潔並且易於維護,還可以方便地實現同一個JSP檔案支援多種語言版本。由於標籤是XML元素,所以它的名稱和屬性都是大小寫敏感的   2.標籤庫(Tag library):   由一系列功能相似、邏輯上互相聯絡的標籤構

JSP:定義標籤詳細說明

//修改標籤內容 public class SimpleDemo3 extends SimpleTagSupport {          @Override          public void doTag() throws JspException, IOException {           

jsp定義標籤的學習[從學習到工作(五)]

     在現在的開發平臺上發現有自己定義的標籤,於是在空閒時間學習了一下自定義標籤,並且做了一個簡單的ajax校驗的text標籤,廢話少說,看下面的步驟和程式碼。      一. jsp頁面包含的內容    

jsp 定義標籤

 繼承關係 java.lang.Object          javax.servlet.jsp.tagext.TagSupport          javax.serv

JSP定義標籤遍歷List (ct:forEach)

問題描述 : jsp 的pageContext域中存在User物件的users列表,想在jsp檔案中遍歷users. <% class User{ private String name; private Strin

shiro jsp定義標籤

1.建tld檔案   auth.tld <taglib> <tlib-version>1.1.2</tlib-version> <jsp-version>1.2</jsp-version> <

JSP定義標籤

mvvm框架盛行的今天jsp視乎已經out了,但是由於歷史原因jsp使用範圍依舊十分廣泛。(本人 喜歡jsp ,在標籤開發的效率上,jsp要比vue低很多,並且前後端分離的開發模式,在除錯,部署,分工都要好很多。)  第一步 : jsp標籤的描述,宣告 jsp標籤需要使用

shiro jsp定義標籤

1.建tld檔案   auth.tld <taglib> <tlib-version>1.1.2</tlib-version> <jsp-version>1.2</jsp-version> <

實現按鈕級許可權管理--使用jsp定義標籤

在有些系統中,可能會用到按鈕級的許可權管理。這裡使用jsp自定義標籤來實現。0、基礎配置。建表    ###角色對應的操作按鈕1.1.1角色對應的按鈕關聯表,角色下有哪些按鈕是可以訪問的CREATE TABLE `system_role_operation` (  `role

jsp定義標籤實現許可權攔截

    最近專案需要要實現在頁面端一個許可權攔截功能。具體需求是,一個使用者登陸到系統後,判斷他是否有執行某個功能的許可權,如果有許可權,則功能鍵對該使用者可見;否則的話,不可見。要實現此功能,自定義標籤無疑是一種很好的解決辦法。具體方法如下:(語言java、頁面實現jsp

JSP定義標籤開發+TLD檔案元素詳解

自定義標籤開發整理 從jsp1.1開始就可以在jsp頁面中使用自定義標籤了,使用自定義標籤不但可以實現程式碼重用,而且可以使jsp程式碼更簡潔。Jsp2.0的標籤擴充套件API中又增加了SimpleTag介面和其實現類SimpleTagSupport。 標籤擴充套件API層

JSP定義標籤(一) 樹形下拉選擇選單

<tag>       <name>selector</name>       <tag-class>com.moonNigh.tagSupport.SelectorTag</tag-class>       <body-content&

[JSP]定義標籤庫taglib

目錄自定義標籤的步驟大概有三步:1.繼承javax.servlet.jsp.tagext.*下提供的幾個標籤類,如Tag、TagSupport、BodyTagSupport、SimpleTagSupport(JSP2.0)。2.在tld檔案中配置標籤庫資訊,以及標籤與實現類的

jsp定義標籤處理器類----帶屬性標籤的做法

  //執行invoke方法,把標籤體內容輸出到指定的writer物件中   //1.2往瀏覽器輸出內容,writer為null就是預設往瀏覽器輸出   /*JspWriter out = this.getJspContext().getOut();   jspBody.invoke(out);   */  

JSP定義標籤(4):開發jsp巢狀的標籤

開發巢狀的標籤:haveChildTag   實際工程中往往需要多個標籤來配合完成一定的功能,巢狀的標籤存在父子關係,其中,父為外層標籤,子為內層標籤。本例項將用兩個簡單的標籤來演示,父標籤則作出邏輯判斷,如果isOutput屬性為true,則輸出例項108中的標籤hello

【J2EE】- JSP定義標籤

浪費了“黃金五年”的Java程式設計師,還有救嗎? >>>   

jsp定義時間轉化tag標籤

1.新建Java型別DateTag import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import javax.servlet.jsp.JspExcepti

關於JSP定義標籤

前兩天學習了JSP的自定義標籤 ,現在來記述下,加深印象。 一、建立自定義標籤類 自定義標籤類的建立方式有多種,不過還是繼承SimpleTagSupport類比較簡單,沒必要重寫那麼多方法,只需要重寫doTag方法,然後把邏輯處理寫在doTag方法裡。此處是我的三個自定義標籤處理類: C

javaweb:JSTL(JSP標準標籤庫)、定義標籤開發

JSTL 簡介: JSTL的全稱: •JSP Standard Tag Library,JSP標準標籤庫 JSTL的作用: •提供給 Java Web 開發人員一個標準通用的標籤函式庫 •和 EL 來取代傳統直接在頁面上嵌入 Java 程式(Scripting)的做法,

javaEE JSP定義標籤庫,定義分頁條標籤

WEB-INF/tld/commons.tld(自定義標籤庫的描述): <?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE taglib PUBLIC "-//Sun Microsystems, In