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

首頁 > 編程 > JSP > 正文

JSP自定義標簽基礎知識學習

2020-07-27 21:28:17
字體:
來源:轉載
供稿:網友

在實際的開發中,如為了簡化JSP中出現大量的JSP腳本,那么我們需要使用標準標簽庫和EL表達式,但是和新標簽庫中提供的標簽是有限的,不可能完全滿足開發的需要。如:分頁。因此需要學習如何自定義自己的標簽庫。

如果要實現自定義標簽,那么需要如下幾步:

編寫標簽處理類
需要繼承或者實現相關的類或者接口

編寫標簽描述文件
該文件是一個XML文件,而且必須放在網站的WEB-INF目錄中

在JSP中引入標簽且使用
使用taglib指令引入標簽庫,隨后使用。

自定標簽的類體系

詳細了解下一下幾個類和接口:

---| JspTag接口

該接口是一個典型的標記接口。主要標記實現該接口的類可以處理標簽。Seralizable

----| Tag接口

該接口主要描述的是標簽處理類的共性,但是實現該接口的類不能處理標簽體,該接口中定義了標簽處理類和JSP頁面之間的通信協議。而且提供生命周期方法如:在標簽開始和接結束的時候自動執行的方法。

------| TagSupport類

主要負責處理標簽的屬性。

-------| BodyTagSupport類

該類主要的是處理標簽的標簽體。

  體驗

1. 處理類

public class HelloHanler implements Tag {  private PageContext pageContext = null;  // 標簽結束的時候執行  public int doEndTag() throws JspException {    return 0;  }  // 標簽開始的時候執行  public int doStartTag() throws JspException {    // 給頁面輸出一個hello信息    JspWriter out = pageContext.getOut();    // 輸出信息    String info = "hello custom tag";    try {      out.write(info);    } catch (IOException e) {      e.printStackTrace();    }    return 0;  }  // 獲取其父標簽  public Tag getParent() {    return null;  }  // 釋放  public void release() {  }  // 設置jsp上下文對象  public void setPageContext(PageContext pc) {    this.pageContext = pc;  }  // 設置父標簽  public void setParent(Tag t) {  }}

2. 描述文件

<?xml version="1.0" encoding="UTF-8"?><taglib   xmlns="http://java.sun.com/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"  version="2.1"> <!-- 2. 編寫標簽庫描述文件 -->  <tlib-version>1.0</tlib-version> <short-name>jnb</short-name>  <tag>   <name>hello</name>  <tag-class>cn.itcast.test.HelloHanler</tag-class>  <body-content>empty</body-content> </tag></taglib>  

3. 引入

<%@taglib uri="/WEB-INF/test.tld" prefix="jnb"%>   <br/><jnb:hello/>

JSP1.2進行自定義標簽開發

自定義一個現實日期的標簽。

1. 實現可以處理標簽屬性的標簽處理類

public class ShowDate extends TagSupport {  // 為了便于獲取屬性,那么直接在處理類中定義和屬性同名的屬性變量即可且提供get和set方法  private String pattern;  public String getPattern() {    return pattern;  }  public void setPattern(String pattern) {    this.pattern = pattern;  }  // 標簽開始的時候自動執行  public int doStartTag() throws JspException {    // 創建日期對象    Date date = new Date();    // 創建格式化對象    SimpleDateFormat format = new SimpleDateFormat(getPattern());    // 格式化    String str = format.format(date);    // 獲取JSP上下文對象    PageContext pageContext = this.pageContext;    // 獲取JSP的OUT輸出流    JspWriter out = pageContext.getOut();    // 輸出    try {      out.write(str);    } catch (IOException e) {      e.printStackTrace();    }    return super.doStartTag();  }}

2. 描述文件

<taglib        標簽庫描述文件的根元素  xmlns="http://java.sun.com/xml/ns/javaee"  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"   version="2.1"> <!-- 2. 編寫標簽庫描述文件 -->  <tlib-version>1.0</tlib-version>     指定標簽庫的版本(必須) <short-name>jnb</short-name>       指定標簽庫的簡稱(必須) <tag>                    指定一個標簽開始  <name>showdate</name>           標簽名  <tag-class>cn.itcast.custom.ShowDate</tag-class>   指定標簽處理類  <body-content>empty</body-content>   指定標簽體,JSP(有)empty(沒有)  <attribute>               描述屬性    <name>pattern</name>         屬性名    <required>true</required>     屬性的說明信息    <rtexprvalue>true</rtexprvalue>   屬性值的說明信息  </attribute> </tag></taglib> 

3.  引入和使用

<%@taglib uri="/WEB-INF/date.tld" prefix="date"%>   <date:showdate pattern="yyyy年MM月dd日 a E"/>

實現帶標簽體的自定義標簽

1. 標簽處理類

public class ShowDateByBody extends BodyTagSupport {  // 為了便于獲取屬性,那么直接在處理類中定義和屬性同名的屬性變量即可且提供get和set方法  private String pattern;  public String getPattern() {    return pattern;  }  public void setPattern(String pattern) {    this.pattern = pattern;  }  // 標簽開始的時候自動執行  public int doStartTag() throws JspException {    // 創建日期對象    Date date = new Date();    // 創建格式化對象    SimpleDateFormat format = new SimpleDateFormat(getPattern());    // 格式化    String str = format.format(date);    // 獲取JSP上下文對象    PageContext pageContext = this.pageContext;    // 獲取JSP的OUT輸出流    JspWriter out = pageContext.getOut();    // 獲取標簽提的內容    BodyContent body = this.getBodyContent();    String tag_body = body.getString();    str = "<font color='red'>"+tag_body+"</font>"+str;    // 輸出    try {      out.write(str);    } catch (IOException e) {      e.printStackTrace();    }    return super.doStartTag();  }}

2. 描述文件

 <tag>   <name>showdate2</name>  <tag-class>cn.itcast.custom.ShowDateByBody</tag-class>  <body-content>JSP</body-content>  <attribute>    <name>pattern</name>    <required>true</required>    <rtexprvalue>true</rtexprvalue>  </attribute> </tag>

3. 引入和使用

<date:showdate2 pattern="yyyy-MM-dd">系統時間:</date:showdate2>

以上就是本文的全部內容,希望對大家的學習有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
精品亚洲精品福利线在观看| 97香蕉超级碰碰久久免费的优势| 亚洲人成网站777色婷婷| 亚洲色图在线观看| 国产原创欧美精品| 国产亚洲精品久久久久久777| 日韩精品欧美激情| 国产精品无码专区在线观看| 日韩精品有码在线观看| 色偷偷91综合久久噜噜| 欧美日韩激情视频| 精品久久久在线观看| 色久欧美在线视频观看| 久久亚洲综合国产精品99麻豆精品福利| 欧美激情网站在线观看| 国产不卡视频在线| 性欧美xxxx视频在线观看| 亚洲国产一区自拍| xxxx欧美18另类的高清| 黄色成人在线免费| 欧美国产日韩一区二区三区| 一区二区三区四区在线观看视频| 国内精品久久久久伊人av| 精品久久久久久久久国产字幕| 亚洲精品综合精品自拍| 黄网动漫久久久| 在线观看精品自拍私拍| 97香蕉超级碰碰久久免费软件| 97免费中文视频在线观看| 亚洲老司机av| 亚洲视频在线免费观看| 午夜精品在线视频| 久久久久久有精品国产| 欧美午夜片在线免费观看| 日韩av网址在线观看| 久久在线视频在线| 一本一道久久a久久精品逆3p| 亚洲欧美第一页| 精品久久久一区| 国产福利视频一区二区| 超在线视频97| 欧美午夜精品在线| 国产91在线播放| 91色在线观看| 国产欧美va欧美va香蕉在线| 亚洲美女福利视频网站| 国产精品一二三在线| 亚洲男女性事视频| 成人免费观看a| 色av中文字幕一区| 2023亚洲男人天堂| 91午夜在线播放| 97精品视频在线观看| 国产精品久久久久久久久久免费| 欧美精品激情在线| 高跟丝袜一区二区三区| 一区二区成人精品| 国产日韩综合一区二区性色av| 亚洲国产高清自拍| 色av中文字幕一区| 日韩精品在线观看视频| 国产欧美日韩中文字幕在线| 亚洲国产中文字幕在线观看| 日韩av电影在线网| 国产欧美日韩视频| 欧美丰满老妇厨房牲生活| 国产成人啪精品视频免费网| 亚洲精品一区久久久久久| 日韩高清免费观看| 精品自拍视频在线观看| 日韩成人激情在线| 欧美高清在线播放| 亚洲第一综合天堂另类专| 国产丝袜一区视频在线观看| 国产精品一香蕉国产线看观看| 91在线视频免费| 亚洲成年人在线| 自拍视频国产精品| 欧美xxxx综合视频| 在线观看91久久久久久| 精品视频一区在线视频| 尤物yw午夜国产精品视频| 中文字幕精品一区二区精品| 亚洲国产日韩一区| 欧洲成人午夜免费大片| 久久激情五月丁香伊人| 欧美在线免费视频| 日韩精品中文字幕在线播放| 青青草一区二区| 欧美日韩亚洲一区二区| 久久精彩免费视频| 中文字幕一区二区三区电影| 3344国产精品免费看| 久久久精品一区二区| 亚洲一区二区三区乱码aⅴ| 亚洲欧美激情精品一区二区| 欧美精品在线观看91| 中文字幕在线视频日韩| 欧美一级bbbbb性bbbb喷潮片| 日韩免费在线视频| 日韩免费黄色av| 日韩av电影院| 日本精品免费一区二区三区| 成人观看高清在线观看免费| 日韩欧美国产中文字幕| 日韩中文字幕不卡视频| 久久综合免费视频影院| 91精品久久久久久久久青青| 日韩精品有码在线观看| 亚洲mm色国产网站| 日韩av免费在线看| 性色av一区二区三区在线观看| 欧美午夜影院在线视频| 91精品国产自产在线老师啪| 色综合导航网站| 国产精品久久久久免费a∨大胸| 国产丝袜视频一区| 国内精品久久影院| 欧美激情在线有限公司| 日本a级片电影一区二区| 精品一区二区三区四区在线| 日韩欧美中文在线| 国产精品美女视频网站| 亚洲国产精品久久久久秋霞蜜臀| 精品高清美女精品国产区| 九九热最新视频//这里只有精品| 91精品一区二区| 国产视频亚洲精品| 国产一区二区av| 国产精品久久久av| 亚洲精品视频二区| 日韩av网站在线| 国产精品十八以下禁看| 国产偷国产偷亚洲清高网站| 久久久久久亚洲精品| 操91在线视频| 亚洲尤物视频网| 91精品国产综合久久久久久蜜臀| 日韩欧美在线字幕| 精品一区二区三区三区| 亚洲系列中文字幕| 国产精品成人品| 国产精品久久久久久久久久尿| 久久视频在线播放| 亚洲人成电影在线| 久久成人这里只有精品| 97精品久久久| 91在线观看免费高清完整版在线观看| 热久久视久久精品18亚洲精品| 国产综合福利在线| 在线亚洲国产精品网| 久久偷看各类女兵18女厕嘘嘘| 国产精品夜间视频香蕉| 日本久久久久亚洲中字幕| 国产精品日日摸夜夜添夜夜av| 亚洲精品电影网在线观看| 亚洲精品久久视频| 日韩欧美在线免费| 亚洲欧美综合区自拍另类| 色青青草原桃花久久综合| 日韩成人在线网站| 欧美日韩国产精品专区| 欧美限制级电影在线观看| 国产精品视频久久|