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

創建你的第一個自定義jsp tag(jsp標簽)

編輯:關於JSP

什麼是jsp(SUN企業級應用的首選) tag拉?假如你知道html,xml(標准化越來越近了),這時你就應該知道tag.任何基於tag的語言(如html)都必須在<和>之間.<titli>是一個標題tag,這些html 標簽(tags)通常被用於客戶端的浏覽器,其作用是統一顯示數據的格式.同樣的,在jsp(SUN企業級應用的首選)中我們也使用<和>,利用他們,在服務端可以做任何你想的到的事情.在jsp(SUN企業級應用的首選)和html中一個細微的區別,那就是所有的jsp(SUN企業級應用的首選)標簽必須遵循xml(標准化越來越近了)標簽的語法,也就是說,在jsp(SUN企業級應用的首選)中所有的開始tag(e.g. <star:firsttag>)必須有一個結束的tag(e.g. <star:firsttag />).
另外要注意的是所有的jsp(SUN企業級應用的首選)標簽都有一個前綴,e.g. star in <star:firsttag /> tag.當然就象html和xml(標准化越來越近了)一樣,jsp(SUN企業級應用的首選)標簽也有屬性(attributes )e.g. <star:firsttag attrib1="value1" attrib2="value2" />就有兩個屬性並被賦予了兩個值.
    那麼,放著現成的標簽不用,為什麼要自定義拉?
     自定義的好處:1. jsp(SUN企業級應用的首選) tag允許把java(服務端)代碼和html(客戶端)代碼分開,這是非常重要的當     你在開發一個大型項目時,把服務端和客戶端分開.
    2.tags很容易重用的java代碼.
    3.你能把一個很有用的自定義的tag庫打包後給終端客戶使用.
   4.tags很容易維護.
哦,你在想自定義jsp(SUN企業級應用的首選) tags很難嗎?恰好相反.他是一件很容易的事情.就象寫一個普通的java類,所有我們要做的就是寫一個java類,然後直接執行某個interfaces(接口),----這就是我們在這篇文章中要做的,或者擴展成預先定義的java類,如果需要可以重載他們的方法.就象這樣簡單.
  那麼,你將不得不新寫一個text Tag Library Descriptor ( .TLD ) 文件,使你被打包的tag能使用.
好了看看我們的FirstTag.java文件吧.創建一個新的java程序,並保存在/WEB-INF/classes/com/stardeveloper/tag/test/文件中,代碼如下:

package com.stardeveloper.tag.test;import java.io.*;import javax.servlet.jsp(SUN企業級應用的首選).*;import javax.servlet.jsp(SUN企業級應用的首選).tagext.*;public class FirstTag implements Tag, Serializable {private PageContext pc = null;private Tag parent = null;private String name = null;public void setPageContext(PageContext p) {pc = p;}public void setParent(Tag t) {parent = t;}public Tag getParent() {return parent;}public void setName(String s) {name = s;}public String getName() {return name;}public int doStartTag() throws jsp(SUN企業級應用的首選)Exception {try {if(name != null) {pc.getOut().write("Hello " + name + "!");} else {pc.getOut().write("You didnt enter your name");pc.getOut().write(", what are you afraid of ?");}} catch(IOException e) {throw new jsp(SUN企業級應用的首選)TagException("An IOException occurred.");}return SKIP_BODY;}public int doEndTag() throws jsp(SUN企業級應用的首選)Exception {return EVAL_PAGE;}public void release() {pc = null;parent = null;name = null;}}
注意:package com.stardeveloper.tag.test;表明FirstTag class 被打包並放在com.stardeveloper.tag.test中.
2.引入三個包(我們用到他們中的方法和類)
import java.io.*;import javax.servlet.jsp(SUN企業級應用的首選).*;import javax.servlet.jsp(SUN企業級應用的首選).tagext.*;注意這兩感接口Serializable 和Tag,
對於創建一個jsp(SUN企業級應用的首選) tags類來說Serializable並不是必須的,而Tag是最重要的

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