程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> J2EE自定義標簽的詳細

J2EE自定義標簽的詳細

編輯:關於JAVA

1,關於自定義標簽的幾個重要組成部分:

繼承的類:Javax.servlet.JSP.tagext.*:TagSupport

一個屬性: protected PageContext pageContext

兩個方法: public int DOStartTag()

public int doEndTag()

三個常量: SKIP_BODY,SKIP_PAGE,EVAL_PAGE

SKIP_PAGE,EVAL_PAGE是doEndTag()方法的返回值

標簽庫描述文件 (*.tld)

2,流程(工具:eclipse):

1.新建一個web project

2.在項目下新建一個包,包裡建類,繼承TagSupport

3.完成標簽處理類

package demo.tag;

import Javax.servlet.JSp.JSPException;

import Javax.servlet.JSP.*;

import Javax.servlet.JSP.tagext.TagSupport;

import Java.io.*;

//需要導入的幾個常用的包

@SuppressWarnings(\"serial\")

public class TagDemo extends TagSupport ...{

private int pageSize;//pageSize屬性,控制頁面顯示的個數,並且要生成get和set方法

public int getPageSize() ...{

return pageSize;

}

public void setPageSize(int pageSize) ...{

this.pageSize = pageSize;

}

// public int doEndTag() throws JSPException {

// 在這裡沒有用

// return super.doEndTag();

// }

public int DOStartTag() throws JSPException ...{

JSpWriter out = pageContext.getOut();//用pageContext獲取out,他還能獲取session等,基本上JSP的內置對象都能獲取,非常有用

for (int i=0; i

try ...{

out.println(\"

\");

out.println(\"\");

out.println(\"\"); [Page]

out.println(i);

out.println(\"\");

out.println(\"\");

out.println(i*10);

out.println(\"\");

out.println(\"\");

out.println(\"

\");

} catch (IOException e) ...{

e.printStackTrace();

}

}

return SKIP_BODY;

}

}

1. 標簽處理類應該繼承自TagSupport類

2. 標簽處理類應該覆蓋父類的至少一個方法 doStartTag() 或 doEndTag(),如果你覆蓋是DOStartTag()方法應該返回 SKIP_BODY, 如果你覆蓋是doEndTag()方法應該返回 SKIP_PAGE,EVAL_PAGE

3. 充分利用標簽處理類的pageContext屬性,可以通過該屬性獲取使用自定義標簽的JSP頁面的各種對象:

getOut(): 獲取JSP頁面的輸出流 out

getRequest: 獲取JSP頁面的請求對象 request

getSession: 獲取JSP頁面的會話對象 session

getServletContext: 獲取JSP頁面的應用對象 application [Page]

4. 如果我們要完成一個帶屬性自定義標簽,需要在標簽處理類聲明相關屬性

5.在WEB-INF下新建一個.tld文件完成標簽庫描述文件

PUBLIC \"-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN\"

\"http://Java.sun.com/J2EE(J2EE培訓 )/dtd/web-JSPtaglibrary_1_2.dtd\">

1.0

1.2

MyTagLib

showDataTag

demo.tag.TagDemo

pageSize

true

Integer

1. 標簽庫描述文件必須以 tld 為 文件的後綴名

2. 標簽庫描述文件應該遵守 XML 語法要求

3. 標簽庫描述文件的根元素 必須是

4. taglib根元素下必須完成以下四個子元素

tlib-version : JSP-version: short-name: 標簽庫描述文件的簡要說明,且只能出現一次

tag: 能出現一到多次 , 描述標簽庫中的標簽名及你要對應的標簽處理類

5. tag元素下出現的子元素:

name子元素:標簽名

tag-class子元素:對應的標簽處理類

attribute子元素:該標簽應包含的屬性

6. attribute元素下出現的子元素:

name:屬性名

required:該屬性名可不可省略

type:標簽處理類中相關屬性的類型

5.在web.XML引入標簽庫描述文件

[Page]

XMLns=\"http://Java.sun.com/XML/ns/J2EE\"

xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"

xsi:schemaLocation=\"http://Java.sun.com/XML/ns/J2EE

http://Java.sun.com/XML/ns/J2EE/web-app_2_4.xsd\">

index.JSP

MyFirstTag

/WEB-INF/MyTagLib.tld

1. 在web.XML中實現taglib元素的子元素:

taglib-location: 標簽庫描述文件在Web應用中的相對路徑

/WEB-INF/MyTagLib.tld

taglib-uri:該標簽庫在JSP中用什麼名字來調用

abc

2. 在要調用標簽庫的JSP中聲明

聲明:

調用:

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved