1" />

亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

JSP自定義標簽開發入門(2)

系統 2371 0

?

JSP自定義標簽開發入門(2)


JSP自定義標簽開發入門,簡單標簽的開發我們只要實現Tag接口即可,為了簡單起見可以直接繼承實現了此接口的TagSupport類。

AD:

?

TagSupport類已經為我們實現并擴展了一些方法(比如在上述方法中我們可以直接使用pageContext對象,調用父標簽getParent()等),所以一般情況下我們只需重寫doStartTag(),doEndTag() 即可

TLD文件說明:

<!--版本號-->
<tlib-version>1.0</tlib-version>
<jsp-version>2.0</jsp-version>
<short-name>cc</short-name>
<tag>
<!—指定標簽名 -->
<name>showUserInfo</name>
<!—指定標簽類文件的全路徑 -->
<tag-class>com.mytags.UserInfoTag</tag-class>
<!--如果不需要標簽體則設置empty,反之設定jsp -->
<body-content>empty</body-content>
<!—設定屬性(如果有的話) -->
<attribute>
<!—指定標簽名 -->
<name>user</name>
<!—是否是必須,如果非必須沒設置則為空 -->
<required>false</required>
<rtexprvalue>true</rtexprvalue><!—是否可在屬性中使用表達式 -->
</attribute>
</tag>

Web.xml文件說明:

<jsp-config>
<taglib>
<!--

標簽庫的uri路徑
即jsp頭文件中聲明<%@ taglib uri="/mytaglib" prefix="cc"%>
的uri
-->
<taglib-uri>/mytaglib</taglib-uri>
<!—tld文件所在的位置-->
<taglib-location>/WEB-INF/mytaglib.tld</taglib-location>
</taglib>
</jsp-config>

目標2:自定義一個類似于Asp.Net中的Reapter控件的標簽

效果圖:

?

JSP自定義標簽開發入門(2)

?

在jsp頁面使用此自定義標簽:

        
  1. <!--?創建需要展現javabean(UserInfo)集合的實例(用于測試數據)?--> ?
  2. < % ?
  3. ????List < UserInfo > ? users ?=? new ?ArrayList < UserInfo > ();??? ?
  4. ????users.add(new?UserInfo("Zhangsan",?12,?"Zhangsan@163.com")); ?
  5. ????users.add(new?UserInfo("Lisi",?22,?"Lisi@sina.com")); ?
  6. ????users.add(new?UserInfo("Wangwu",?33,?"Wangwu@qq.com")); ?
  7. ????pageContext.setAttribute("users",?users); ?
  8. % > ?
  9. ? ?
  10. <!--?給標簽綁定數據源??--> ?
  11. < table ? width = '500px' ? border = '1' ? align = 'center' > ?
  12. ???? < tr > ?
  13. ???????? < td ? width = '20%' > UserName </ td > ?
  14. ???????? < td ? width = '20%' > Age </ td > ?
  15. ???????? < td > Email </ td > ?
  16. ???? </ tr > ?
  17. ???? < cc:repeater ? var = "item" ? items = "${pageScope.users?}" > ?
  18. ???????? < tr > ?
  19. ???????????? < td > ${item.userName?} </ td > ?
  20. ???????????? < td > ${item.age?} </ td > ?
  21. ???????????? < td > ${item.email?} </ td > ?
  22. ???????? </ tr > ?
  23. ???? </ cc:repeater > ?
  24. </ table > ?

開發步驟:

要完成此控件我們需要實現一個迭代接口,即IterationTag,由于TagSupport同樣實現了此接口,所以我們繼承此類

1 創建自定義標簽類

        
  1. public?class?Repeater?extends?TagSupport?{ ?
  2. ????private?Collection?items; ?
  3. ????private?Iterator?it; ?
  4. ????private?String?var; ?
  5. ? ?
  6. ????@Override ?
  7. ????public?int?doStartTag()?throws?JspException?{ ?
  8. ????????if( items ?==?null?||?items.size()?==?0)?return?SKIP_BODY; ?
  9. ???????? it ?=? items .iterator();?? ?
  10. ????????if(it.hasNext())?{ ?
  11. ????????????pageContext.setAttribute(var,?it.next()); ?
  12. ????????} ?
  13. ????????return?EVAL_BODY_INCLUDE; ?
  14. ????} ?
  15. ??? ?
  16. ????@Override ?
  17. ????public?int?doAfterBody()?throws?JspException?{ ?
  18. ????????if(it.hasNext())?{ ?
  19. ????????????pageContext.setAttribute(var,?it.next()); ?
  20. ????????????return?EVAL_BODY_AGAIN; ?
  21. ????????} ?
  22. ????????return?SKIP_BODY; ?
  23. ????} ?
  24. ??? ?
  25. ????@Override ?
  26. ????public?int?doEndTag()?throws?JspException?{ ?
  27. ????????return?EVAL_PAGE; ?
  28. ????} ?
  29. ??? ?
  30. ????public?void?setItems(Collection?items)?{ ?
  31. ???????? this.items ?=?items; ?
  32. ????} ?
  33. ??? ?
  34. ????public?void?setVar(String?var)?{ ?
  35. ???????? this.var ?=?var; ?
  36. ????} ?
  37. }?

2在Web-Inf創建標簽庫描述文件.tdl(Tag Library Description)由于目標1種已經創建了此文件,我們只需增加此標簽的配置即可

        
  1. < tag > ?
  2. ???? < name > repeater </ name > ?
  3. ???? < tag-class > com.mytags.Repeater </ tag-class > ?
  4. ???? < body-content > jsp </ body-content > ?
  5. ???? < attribute > ?
  6. ???????? < name > items </ name > ?
  7. ???????? < required > false </ required > ?
  8. ???????? < rtexprvalue > true </ rtexprvalue > ?
  9. ???? </ attribute > ?
  10. ???? < attribute > ?
  11. ???????? < name > var </ name > ?
  12. ???????? < required > true </ required > ?
  13. ???????? < rtexprvalue > true </ rtexprvalue > ?
  14. ???? </ attribute > ?
  15. ? </ tag > ?
  16. ??

3 配置web.xml (目標1中已完成,無需修改)

?

JSP自定義標簽開發入門(2)


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦?。。?/p>

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 色国产视频 | 第一福利在线观看永久视频 | 狼狼色丁香久久婷婷综合五月 | 国产亚洲精品xxx | 97在线免费视频观看 | 国产高清国内精品福利色噜噜 | 色综合图区| 9久re在线观看视频精品 | 日本亚洲成高清一区二区三区 | 奇米影视第四色首页 | 国内精品视频九九九九 | 国产一区二区免费在线 | 日日日操操操 | 久久久婷婷亚洲5月97色 | 色在线综合 | 国产亚洲欧美另类一区二区三区 | 久久久精品中文字幕 | 久久www免费人成高清 | 夜色伊人| 国产一区二区三区不卡观 | 亚洲国产精品久久日 | 午夜毛片视频 | 日本不卡视频在线播放 | 久久中文网中文字幕 | 国产精品免费aⅴ片在线观看 | 久久99国产乱子伦精品免费 | 深夜你懂的在线网址入口 | 亚洲国产欧美国产第一区二区三区 | 中文字幕不卡一区2021 | 麻豆久久婷婷国产综合五月 | 日本一级黄色毛片 | 激情五月婷婷网 | 色综合视频一区二区观看 | 日韩一区二区三区中文字幕 | 久久综合久久综合久久综合 | 一级毛片网 | 好男人午夜影院 | 久久精品国产在爱久久 | 亚洲婷婷网 | 日本aaaa精品免费视频 | 免费视频久久 |