亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 網站 > WEB開發 > 正文

Taglib(tld)的原理和實現(實例)

2024-04-27 15:16:34
字體:
來源:轉載
供稿:網友
Taglib(tld)的原理和實現(實例) 【轉】

Tag究竟是什么?如何實現一個Tag? 一個tag就是一個普通的java類,它惟一特別之處是它必須繼承TagSupport或者BodyTagSupport類。這兩個類提供了一些方法,負責jsp頁面和你編寫的類之間的交互,例如輸入,輸出。而這兩個類是由jsp容器提供的,無須開發人員自己實現。換句話說,你只需把實現了業務邏輯的類繼承TagSupport或者BodyTagSupport,再做一些特別的工作,你的類就是一個Tag。并且它自己負責和jsp頁面的交互,不用你多操心。 “特別的工作”通常有以下幾個步驟: 1)提供屬性的set方法,此后這個屬性就可以在jsp頁面設置。以jstl標簽為例 c:out value=""/,這個value就是jsp數據到tag之間的入口。所以tag里面必須有一個setValue方法,具體的屬性可以不叫value。例如setValue(String data){this.data = data;}

這個“value”的名稱是在tld里定義的。取什么名字都可以,只需tag里提供相應的set方法即可。 2)處理 doStartTag 或 doEndTag 。這兩個方法是 TagSupport提供的。 還是以c:out value=""/為例,當jsp解析這個標簽的時候,在“<”處觸發 doStartTag 事件,在“>”時觸發 doEndTag 事件。通常在 doStartTag 里進行邏輯操作,在 doEndTag 里控制輸出。3)編寫tld文件。4)在jsp頁面導入tld。這樣,你的jsp頁面就可以使用自己的tag了。 通常你會發現自己絕大多數活動都集中在 doStartTag 或 doEndTag 方法里。確實如此,熟悉一些接口和類之后,寫taglib很容易。正如《jsp設計》的作者所言:里面的邏輯稍微有點復雜,但畢竟沒有火箭上天那么難。 一個簡單的例子:OutputTag 

package diegoyun;import javax.servlet.jsp.JspException;import javax.servlet.jsp.JspWriter;import javax.servlet.jsp.tagext.TagSupport;/** * @author chenys */public class OutputTag extends TagSupport{
 PRivate String name=null;  public void setName(String name){  this.name = name; }public int doStartTag() throws JspException{try{   JspWriter out = pageContext.getOut();   out.print("Hello! "   name);  }  catch (Exception e){     throw new JspException(e);  }  return EVAL_PAGE; }  }  簡要說明:1 如何輸出到jsp頁面:調用JspWriter JspWriter out = pageContext.getOut();out.print......記住這個方法就可以了。2 輸出后如何作處理,函數會返回幾個值之一。EVAL_PAGE 表示tag已處理完畢,返回jsp頁面。還有幾個值,例如 EVAL_BODY_AGAIN 和EVAL_BODY_INCLUDE等,后面我們會作討論。 編寫tld 
<?xml version="1.0" encoding="ISO-8859-1" ?><!DOCTYPE taglib  PUBLIC "-//Sun Microsystems, Inc.//DTD JSP Tag Library 1.2//EN"  "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
<taglib><tlib-version>1.0</tlib-version><jsp-version>1.2</jsp-version><short-name>diego</short-name> <!--OutputTag--><tag><name>out</name><tag-class>diegoyun.OutputTag</tag-class><body-content>empty</body-content><attribute><name>name</name><required>false</required><rtexprvalue>false</rtexprvalue></attribute></tag></taglib> 
 在WEB-INF下新建tlds文件夾,把這個文件取名為diego.tld,放到tlds文件夾下。路徑應該這樣:WEB-INF/tlds/diego.tld 關于tld的簡單說明:short-name:taglib的名稱,也稱為前綴。比如“c:out value=""/” 里的“c”name:tag的名字。例如“c:out value=""/” 里的"out”,我們的類也取名為out,由于有前綴作區分,不會混淆tag-class:具體的tag類。帶包名body-content:指tag之間的內容。例如c:out value="" ...... /c 起始和關閉標簽之間就是body-content。由于沒有處理body-content,所以上面設為empty“attribute”里的name:屬性名字。例如c:out value=""/里的value。名字可任意取,只要類里提供相應的set方法即可。required:是否必填屬性。rtexprvalue:是否支持運行時表達式取值。這是tag的強大功能。以后我們會討論。暫時設為false 編寫jsp頁面 
<%@ page language="java"%> 

<%@ taglib uri="/WEB-INF/tlds/diego.tld" prefix="diego"%><html><body>Test Tag:<diego:out name="diegoyun"/></body></html>

我的編程環境是eclipse tomcat.啟動服務器,如果一切按照上面步驟的話,就能看到 Test Tag: Hello! diegoyun 字樣。最簡單的tag就這么出來了。并不難,是不是?(T111)


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
亚洲综合在线做性| 色中色综合影院手机版在线观看| 亚洲精品国产拍免费91在线| 韩国精品久久久999| 国产精品丝袜久久久久久高清| 亚洲精品v欧美精品v日韩精品| 91超碰中文字幕久久精品| 欧美日韩国产色| 日韩毛片在线看| 性夜试看影院91社区| 欧美激情区在线播放| 欧美一区二区大胆人体摄影专业网站| 久久久成人的性感天堂| 久久亚洲国产精品| 国产91亚洲精品| 日韩电影视频免费| 国产97色在线|日韩| 欧美一级视频在线观看| 久久青草福利网站| 亚洲精品大尺度| 日韩中文字幕亚洲| 在线观看精品国产视频| 亚洲国产欧美一区二区丝袜黑人| 亚洲第一国产精品| 8x海外华人永久免费日韩内陆视频| 色偷偷91综合久久噜噜| 国产精品久久久久久久久久尿| 日韩精品在线视频观看| 国产精品亚洲自拍| 国内精品视频久久| 久热国产精品视频| 精品久久久久久中文字幕大豆网| 亚洲激情第一页| 7777免费精品视频| 日韩国产精品亚洲а∨天堂免| 国产精品久久久一区| 亚洲精品wwww| 亚洲天堂成人在线| 日韩在线视频线视频免费网站| 亚洲自拍高清视频网站| 久久精品亚洲精品| 日韩黄在线观看| 欧美日韩激情视频8区| 久久久久久久久久久网站| 亚洲视频第一页| 亚洲qvod图片区电影| 91日本在线视频| 亚洲激情中文字幕| 91精品在线看| 超在线视频97| 国语自产精品视频在线看抢先版图片| 亚洲精品欧美一区二区三区| 成人黄色av免费在线观看| 亚洲黄色av网站| 一区二区在线免费视频| 黄色一区二区在线观看| 精品久久久久久久久国产字幕| 精品av在线播放| 欧美在线激情视频| 日韩大陆欧美高清视频区| 久久国产精品亚洲| 国产日产欧美a一级在线| 欧美大片va欧美在线播放| 亚洲国产成人精品电影| 精品久久久久久久久中文字幕| 欧美激情一区二区三区高清视频| 精品国产一区久久久| 欧美一级淫片videoshd| 欧美精品九九久久| 55夜色66夜色国产精品视频| 国产中文字幕91| 国产精品网站视频| 青青草一区二区| 日韩电影中文字幕一区| 亚洲成人av片在线观看| 亚洲激情国产精品| 国产一区二区三区视频在线观看| 欧美成人精品一区二区| 欧美激情一区二区久久久| 97视频com| 日本一区二三区好的精华液| 操91在线视频| 欧美日韩在线观看视频| 亚洲免费小视频| 在线成人激情视频| 日韩性xxxx爱| 亚洲欧美精品一区| 欧美性极品xxxx做受| 亚洲精品在线不卡| 国内外成人免费激情在线视频| 亚洲sss综合天堂久久| 久久久999精品免费| 狠狠躁夜夜躁久久躁别揉| 久久国产加勒比精品无码| 国产精品久久久久久久久久久不卡| 日韩中文在线不卡| 久久久亚洲福利精品午夜| 国产精品xxx视频| 国产精品极品美女粉嫩高清在线| 国产经典一区二区| 69国产精品成人在线播放| www.亚洲天堂| 97婷婷大伊香蕉精品视频| 国产在线观看一区二区三区| 精品色蜜蜜精品视频在线观看| 日本高清久久天堂| 国产v综合v亚洲欧美久久| 色偷偷888欧美精品久久久| 欧美在线免费视频| 国产精品美女久久久久av超清| 自拍偷拍亚洲欧美| 亚洲精品一区在线观看香蕉| 国产激情综合五月久久| 亚洲综合日韩在线| 亚洲精品国产精品久久清纯直播| 国产成人久久精品| 综合国产在线视频| 亚洲第五色综合网| 欧美激情精品在线| 欧美日韩精品国产| 亚洲天堂开心观看| 亚洲午夜精品视频| 日本精品久久中文字幕佐佐木| 久久精品最新地址| 国产丝袜一区二区三区免费视频| 成人黄色生活片| 国产成人福利夜色影视| 国产日韩欧美影视| 2019最新中文字幕| 欧美视频第一页| 久久综合色88| 亚洲国产精品视频在线观看| 欧美成人四级hd版| 亚洲人成在线播放| 国产精品久久久久91| 97视频在线观看免费高清完整版在线观看| 欧美性xxxxhd| 孩xxxx性bbbb欧美| 久久久国产精品亚洲一区| 久久影院免费观看| 精品电影在线观看| 国产精品亚洲片夜色在线| 国内外成人免费激情在线视频网站| 性欧美办公室18xxxxhd| 亚洲欧美日韩一区在线| 国产视频精品va久久久久久| 国产精品视频播放| 亚洲欧美日韩成人| 亚洲图片欧洲图片av| 亚洲精品国精品久久99热| 亚洲女人天堂视频| 日韩av在线网| 正在播放欧美一区| 九九热99久久久国产盗摄| 久久精品久久久久久| 久久99亚洲热视| 亚洲福利在线播放| 亚洲免费人成在线视频观看| 亚洲国产一区自拍| 亚洲成色777777女色窝| 日韩女优人人人人射在线视频| 国产成人拍精品视频午夜网站| 国产极品精品在线观看| 97香蕉久久超级碰碰高清版|