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條評論
主站蜘蛛池模板: 99久久精品免费精品国产 | 亚洲最大免费视频网 | www.国产福利视频.com | 日韩一区国产二区欧美三 | 欧美国产精品一区二区免费 | 天天综合射 | 中文字幕一区二区三区四区五区人 | 日韩欧美精品有码在线观看 | 羞羞网站免费观看 | 国产一区二区精品久久小说 | 狠狠干影视 | 亚洲免费人成在线视频观看 | 亚洲国产精品激情在线观看 | 97久久国产一区二区三区四区 | jizzjizz欧美69巨大 | 国产精品视频一区二区三区经 | 中日韩欧美中文字幕毛片 | 欧美一区二区三区免费观看视频 | 久草成人| 天天久久综合网站 | 操天天 | α毛片 | 久久最稳定资源站在线 | 国产福利免费视频 | 国产成人精品久久一区二区小说 | 99久久综合狠狠综合久久 | 久久青青草原精品国产麻豆 | 久草视频在线免费播放 | 四虎在线最新地址4hu | 老子午夜精品我不卡影院 | 久久草在线播放 | 国产午夜亚洲精品第一区 | 激情在线观看视频 | 亚洲欧美一区二区三区久久 | 久久免费精品高清麻豆 | a毛片免费全部播放完整成 a毛片免费全部在线播放毛 | 久久永久免费中文字幕 | 国产成人精品三级91在线影院 | 国产在线观看精品 | 日韩美女中文字幕 | 日本在线黄|