1" />

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

JSP自定義標(biāo)簽開發(fā)入門(2)

系統(tǒng) 2745 0

?

JSP自定義標(biāo)簽開發(fā)入門(2)


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

AD:

?

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

TLD文件說明:

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

Web.xml文件說明:

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

標(biāo)簽庫的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>

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

效果圖:

?

JSP自定義標(biāo)簽開發(fā)入門(2)

?

在jsp頁面使用此自定義標(biāo)簽:

        
  1. <!--?創(chuàng)建需要展現(xiàn)javabean(UserInfo)集合的實例(用于測試數(shù)據(jù))?--> ?
  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. <!--?給標(biāo)簽綁定數(shù)據(jù)源??--> ?
  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 > ?

開發(fā)步驟:

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

1 創(chuàng)建自定義標(biāo)簽類

        
  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創(chuàng)建標(biāo)簽庫描述文件.tdl(Tag Library Description)由于目標(biāo)1種已經(jīng)創(chuàng)建了此文件,我們只需增加此標(biāo)簽的配置即可

        
  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 (目標(biāo)1中已完成,無需修改)

?

JSP自定義標(biāo)簽開發(fā)入門(2)


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯(lián)系: 360901061

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

【本文對您有幫助就好】

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

發(fā)表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 老师在办公室被躁到白浆 | 天天干在线免费视频 | 日韩在线一区视频 | 色91在线 | 久久99国产精品久久99小说 | 欧美亚洲欧美 | 亚洲图片一区二区 | 日本爽| 波多野结衣 一区二区 | 波多野结衣一区二区三区四区 | 久久天天躁狠狠躁夜夜 | 国产精品人人视频 | 亚洲第一区视频在线观看 | 国产精品99久久99久久久看片 | 国产日本欧美亚洲精品视 | 综合国产 | 一区免费 | 国产视频国产 | 日韩一区二区三区四区 | 国产男女猛视频在线观看网站 | 美女福利在线观看 | 亚洲成色在线综合网站 | 亚洲欧美综合国产不卡 | 91综合精品网站久久 | 四虎在线免费 | 99精品在免费线视频 | 99热在线精品播放 | 亚洲涩福利高清在线 | 亚洲欧洲日产国码久在线观看 | 狠狠操图片 | 亚洲天堂久久 | 亚洲国产一区二区三区在线观看 | 国产91免费在线观看 | 亚洲视频在线免费看 | 亚洲黄色片视频 | 91精品国产爱久久久久 | 91国自产精品中文字幕亚洲 | 国产精品原创永久在线观看 | 麻豆久久精品免费看国产 | 国产精品国产自线在线观看 | 精品久久久久久午夜 |