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

首頁 > 編程 > JSP > 正文

JSP自定義標簽-標簽屬性_動力節(jié)點Java學(xué)院整理

2024-09-05 00:23:14
字體:
供稿:網(wǎng)友

對自定義標簽添加一些屬性,可以使我們的標簽功能更加靈活和復(fù)用。例如前一篇博客使用簡單標簽來對標簽體內(nèi)容執(zhí)行一定的次數(shù),就無法在標簽上規(guī)定要執(zhí)行的次數(shù),必須在標簽處理器類中修改,很不方便,如果使用帶屬性的標簽就能很好的解決這個問題。

  要想使簡單標簽具有屬性,通常需要滿足以下兩個步驟:

 ?、?在標簽處理器類中定義屬性,同時為每個屬性生成setter方法;

 ?、?在TLD文件中對于的<tag>標簽下添加屬性的<attribute>標簽,同時<attribute>標簽下定義其從標簽,其中<name>從標簽是必須要有的。<attribute>標簽所擁有的從標簽如下:  

jsp,自定義標簽,標簽屬性

  name標簽:用于指定標簽中屬性的名稱。

  required標簽:指定該屬性是否必須。

  rtexprvalue標簽:指定該屬性是否支持運行時表達式,如JSP表達式(<%=value  %>)和EL表達式( ${value} )。如果我們設(shè)定為“false”的話,那么該屬性只能支持字符串。 

例1:使用簡單標簽來控制標簽體內(nèi)容執(zhí)行次數(shù)(帶屬性標簽方式)
編寫標簽處理器類:

 package com.bjpowernode.simpletag; public class LoopTagBody extends SimpleTagSupport {   private int count; //定義一個屬性,用來指定循環(huán)次數(shù)   public void setCount(int count) {  //為該屬性設(shè)置setter方法     this.count = count;   }   @Override   public void doTag() throws JspException, IOException {       JspFragment fragment = this.getJspBody();     for(int i=0;i<this.count;i++) {  //使用屬性就可以指定循環(huán)次數(shù)       fragment.invoke(null);     }   }   }  

 在TLD文件中定義和描述標簽處理器類,同時指定標簽所在的uri:

<?xml version="1.0" encoding="UTF-8" ?> <taglib xmlns="http://java.sun.com/xml/ns/j2ee"   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"   version="2.0">   <description>A tag library exercising SimpleTag handlers.</description>   <tlib-version>1.0</tlib-version>   <short-name>SimpleTagLibrary</short-name> <uri>simpletag</uri>   <tag>     <name>loopbody</name>     <tag-class>com.bjpowernode.simpletag.LoopTagBody</tag-class>     <body-content>scriptless</body-content>     <attribute>       <name>count</name>       <required>true</required>       <rtexprvalue>true</rtexprvalue>     </attribute>   </tag> </taglib>

  在JSP頁面的開頭導(dǎo)入taglib指令:

  <%@ taglib uri="simpletag" prefix="simple" %>

最后就能在JSP頁面的主體中使用剛才定義好的帶屬性的簡單標簽了,使用“count”屬性就能指定標簽體循環(huán)的次數(shù):

 <simple:loopbody count="5">       神樂! <br>   </simple:loopbody>

在瀏覽器中觀察: 

jsp,自定義標簽,標簽屬性 

  通過上面的例子我們也可以看到,雖然“count”屬性在標簽處理器LoopTagBody類中的類型為int整型,但是在標簽上傳入的是字符串類型,這是因為JSP容器支持將標簽的屬性類型(字符串)轉(zhuǎn)換為八大基本數(shù)據(jù)類型。如果在標簽處理器類中定義一個非八大基本數(shù)據(jù)類型的屬性,那么上面的以上面的方式必定要報錯,因為JSP容器無法將字符串轉(zhuǎn)換為其它類型。除非在標簽屬性中使用其它類型:

例2:

 package com.bjpowernode.simpletag; public class DateAttributeTag extends SimpleTagSupport {   private Date date;    public void setDate(Date date) {     this.date = date;   }   @Override   public void doTag() throws JspException, IOException {     this.getJspContext().getOut().write(date.toString());   } }

在TLD文件中描述(這里省略首尾,詳細內(nèi)容請看例1):

<tag> <name>showtime</name>    <tag-class>com.bjpowernode.simpletag.DateAttributeTag</tag-class>   <body-content>empty</body-content>   <attribute>       <name>date</name>       <required>true</required>       <rtexprvalue>true</rtexprvalue> </attribute> </tag>

注:這里<rtexprvalue>標簽是必須要的。

在JSP頁面中導(dǎo)入taglib指令(此處略)后,在JSP頁面的主體中使用剛才定義的簡單標簽:

  <simple:showtime date="<%=new Date() %>"/>

在瀏覽器中觀察:  

jsp,自定義標簽,標簽屬性

  因為在JSP頁面屬性上若以字符串,則因為在標簽處理器類并非八大基本數(shù)據(jù)類型,因此只能使用JSP表達式或EL表達式將對象傳入,因此必須在TLD文件中將<rtexprvalue>標簽設(shè)置為“true”。 

簡單標簽的應(yīng)用,包括無屬性的和帶屬性的標簽如何使用都已經(jīng)學(xué)習(xí)完畢,內(nèi)容就這么多,剩下的就可以根據(jù)所學(xué)的進行開發(fā)了。

例3:使用簡單標簽來防盜鏈

  如果某個JSP頁面需要防止被別的網(wǎng)站盜鏈,可以在該JSP頁面的最開始部分使用一個簡單標簽,添加一些屬性如指定從哪過來的網(wǎng)站才可以瀏覽本頁面內(nèi)容,指定如果是非指定網(wǎng)址過來的鏈接應(yīng)該先讓請求跳到哪里去。

編寫標簽處理器類:

 package com.bjpowernode.simpletag; public class RefererTag extends SimpleTagSupport {   private String site; //指定允許來訪請求的網(wǎng)址   private String location;    //若非指定來訪請求的網(wǎng)址應(yīng)該先跳轉(zhuǎn)到哪里去      public void setSite(String site) {     this.site = site;   }   public void setLocation(String location) {     this.location = location;   }   @Override   public void doTag() throws JspException, IOException {     PageContext pageContext = (PageContext) this.getJspContext();     HttpServletRequest request = (HttpServletRequest) pageContext.getRequest();     HttpServletResponse response = (HttpServletResponse) pageContext.getResponse();          String requestUrl = request.getHeader("referer");          if(requestUrl==null || !requestUrl.startsWith(site)) {       response.sendRedirect(request.getContextPath()+this.location);       throw new SkipPageException();     }   } }

在TLD文件中描述(這里省略首尾,詳細內(nèi)容請看例1):

 <tag>     <name>referer</name>     <tag-class>com.bjpowernode.simpletag.RefererTag</tag-class>     <body-content>empty</body-content>     <attribute>       <name>site</name>       <required>true</required>       <rtexprvalue>true</rtexprvalue>     </attribute>     <attribute>       <name>location</name>       <required>true</required>       <rtexprvalue>true</rtexprvalue>     </attribute> </tag>

在JSP頁面中導(dǎo)入taglib指令(此處略)后,在JSP頁面的主體中使用剛才定義的簡單標簽:

 <simple:referer site="http://www.bjpowernode.com" location="/index.jsp" /> <!DOCTYPE HTML> <html>  <head>  <title>My JSP 'simpletagdemo.jsp' starting page</title>  </head>  。。。 </html>

  結(jié)果:若想訪問該JSP頁面,只有滿足請求的URL前綴為page屬性指定的網(wǎng)址才能訪問,如果是別的web中的超鏈接或者直接在瀏覽器中輸入該JSP的URL,都會被跳轉(zhuǎn)到location屬性指定的網(wǎng)頁。 

例4:使用簡單標簽將標簽體中的HTML過濾轉(zhuǎn)義

編寫標簽處理器類:

 package com.bjpowernode.simpletag; public class HtmlFilterTag extends SimpleTagSupport {   @Override   public void doTag() throws JspException, IOException {     JspFragment fragment = this.getJspBody();     StringWriter writer = new StringWriter();     fragment.invoke(writer);     StringBuffer buffer = writer.getBuffer();     String content = filter(buffer.toString());     this.getJspContext().getOut().write(content);   }   public String filter(String message) {     if (message == null)       return (null);     char content[] = new char[message.length()];     message.getChars(0, message.length(), content, 0);     StringBuilder result = new StringBuilder(content.length + 50);     for (int i = 0; i < content.length; i++) {       switch (content[i]) {       case '<':         result.append("<");         break;       case '>':         result.append(">");         break;       case '&':         result.append("&");         break;       case '"':         result.append(""");         break;       default:         result.append(content[i]);       }     }     return (result.toString());   } }

  其中過濾方法filter方法可以在Tomcat中參考代碼(位置:【Tomcat】--->【webapps】--->【examples】--->【W(wǎng)EB-INF】--->【classes】--->【utils】--->“HTMLFilter.java”)。
在TLD文件中定義和描述標簽:

 <tag>     <name>filterhtml</name>     <tag-class>com.bjpowernode.simpletag.HtmlFilterTag</tag-class>     <body-content>scriptless</body-content>  </tag>

在JSP頁面中的主體部分中使用剛才自定義的簡單標簽:

 <simple:filterhtml>    <a href="www.baidu.com" rel="external nofollow" >百度</a>   </simple:filterhtml>

瀏覽器中觀察:

jsp,自定義標簽,標簽屬性


注:相關(guān)教程知識閱讀請移步到JSP教程頻道。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
色撸撸在线视频| 午夜精品久久久久久久| 岛国大片在线观看| 中文字幕日韩欧美精品在线观看| 成年网站在线观看视频| 国产亚洲精品bv在线观看| 亚洲xxxx3d| 99久久精品国产毛片| 精品国内一区二区三区免费视频| 91av看片| 国产福利在线播放麻豆| 久久久久久久久久久久久久久久久久久| 中文字幕日韩在线视频| 一区二区在线免费观看视频| 天堂av在线免费| 黄色一级大片在线免费看国产| 青青草原国产免费| 国产亚洲久久| av有码在线观看| 六月激情综合网| 超碰超碰在线| 自拍视频在线免费观看| 欧美黄色免费影院| av综合在线播放| 日韩资源av在线| 五月综合激情网| 久久亚洲精品中文字幕| 最好看更新中文字幕| 欧美丝袜足交| 九色91av视频| 亚洲澳门在线| 中文字幕一区在线观看| 色姑娘综合网| 女同毛片一区二区三区| www.-级毛片线天内射视视| 校花撩起jk露出白色内裤国产精品| tube8在线hd| 波多野结衣视频一区| 精品欧美乱码久久久久久1区2区| 国产精品视频一区二区三区四蜜臂| 欧美精品成人一区二区在线观看| 欧美另类69xxx| 在线成人免费视频| 国内精品二区| 99国产精品久久| 不卡电影一区二区三区| 国产理论片在线观看| 国产精品毛片一区二区在线看舒淇| 一本色道久久综合亚洲精品不卡| 天堂在线精品视频| 亚洲精品国产91| av不卡免费在线观看| 交换做爰国语对白| 黄色一级片免费看| 久久精品国产99精品国产亚洲性色| 国产性一乱一性一伧一色| 91精品韩国| 一区二区三区四区免费视频| 国产精品久久久久久久久粉嫩av| 日韩在线你懂的| 青青艹在线观看| 国产黄在线观看免费观看不卡| 欧美亚洲一区三区| 日韩伦理电影网站| 91免费国产精品| 性の欲びの女javhd| 无码人妻一区二区三区在线视频| 日本视频在线一区| 欧美福利在线播放| 欧美黄网站色视频| 一级毛片在线视频| 一道在线中文一区二区三区| 欧美电影在线观看一区| 国产精品色呦呦| 国产韩国精品一区二区三区| 国产免费一区二区三区免费视频| 97涩涩爰在线观看亚洲| 欧美日韩精品一区视频| 亚洲午夜精品久久久久久久久| 亚洲欧美日韩精品久久奇米色影视| 激情开心成人网| 久久久久久久久久久久久91| 欧美日韩激情一区二区| 日本欧美电影在线观看| 国产精品久久久久久久午夜| 成人激情小说乱人伦| 自拍网站在线观看| 色偷偷一区二区三区| 欧美69xxx| 妖精视频一区二区三区免费观看| 50度灰在线| 亚洲精品美女久久7777777| 日本免费在线视频观看| 91成人在线观看喷潮| 日本视频网址| 中文字幕第100页| 亚洲精品乱码久久久久久金桔影视| 裸体免费网站| 国产又黄又大久久| 色妹子一区二区| 全网免费在线播放视频入口| 九九免费精品视频在线观看| 免费成人av在线播放| 欧美性猛交xxxx久久久| 精品国产sm最大网站| 色一情一乱一伦一区二区三区| 草莓视频一区| 欧美乱妇高清无乱码| 视频免费1区二区三区| 久久久久久久久久久久久国产精品| 亚洲av网址在线| 五月婷婷六月激情| 欧美精品黑人猛交高潮| 美女视频一区二区三区在线| 亚洲国产精久久久久久久| 野花社区视频在线观看| 亚洲午夜成aⅴ人片| 国产av一区二区三区| av在线这里只有精品| 欧美一级大片在线视频| 国产高潮久久久| 国产+成+人+亚洲欧洲在线| 欧美乱妇一区二区三区不卡视频| 日韩精品一区二区三区四| 精品国产福利在线| 18以下岁禁止1000部免费| 国产在线观看欧美| 久久福利毛片| 国产视频三区| 国产玖玖精品视频| 久久噜噜亚洲综合| 激情小说亚洲色图| 天天干,天天干| 韩国精品免费视频| 亚洲精品久久久久久久蜜桃| 国产亚洲色婷婷久久99精品| 欧美日韩一区二区三区免费看| 男女羞羞视频在线观看| 国产激情视频网址| 国产精品久久久一区二区三区| 国产乱码精品一区二区三区亚洲人| 午夜国产欧美理论在线播放| 国产欧美日韩精品一区二区三区| 97在线视频观看| 尤物免费看在线视频| 福利电影导航| 欧美午夜黄色| 中文字幕精品久久久| 亚洲最大综合网| 成人精品视频久久久久| 亚洲一级生活片| 免费下载黄色软件| 午夜福利一区二区三区| 丁香花五月激情| 麻豆精品国产自产在线| 国产日产欧美一区二区视频| 91精品欧美福利在线观看| 亚洲女优视频| 一级片在线观看免费| 欧美高清视频在线播放| 在线观看的网站你懂的| 色婷婷香蕉在线一区二区| 日韩三级久久久| 美腿丝袜亚洲三区| 亚洲高清色图| 欧美资源在线| jizzjizzjizz中国免费| 日本三级一区二区三区| 午夜国产在线视频| 只有精品亚洲| 日韩一区二区精品视频| 91se在线| 欧美精品国产精品久久久| 国产成人免费在线观看视频| 国产一区二区在线|播放| 国产suv精品一区二区三区88区| 精品不卡一区二区三区| 尤物视频免费观看| 黄网动漫久久久| 国产精品欧美性爱| 福利网站在线观看| 天天综合天天干| 久青青在线观看视频国产| 在线中文字幕视频观看| 亚洲视频精品一区| 精品国产无码一区二区| 亚洲图片欧美一区| www.中文字幕在线| 久久综合网络一区二区| 99在线免费视频| 国产色a在线观看| 中文字幕国产亚洲2019| 国产精品一区2区3区| 色综合天天色综合| 女色窝人体色77777| 韩国一级黄色录像| 午夜欧美精品久久久久久久| www视频在线观看com| 国产精品18久久久久久久网站| 老头老太做爰xxx视频| 国产精品不卡一区二区三区| 欧美xx网站| 欧美一区二区三区四区夜夜大片| 亚洲一卡二卡三卡四卡| 久久影院一区二区三区| 午夜欧美精品久久久久久久| 国产精品毛片一区视频| 视频免费在线看| 日韩乱码人妻无码中文字幕| 91天堂素人约啪| 精品婷婷伊人一区三区三| 久久韩剧网电视剧| 中文有码在线| 日韩av男人的天堂| 国产成人福利网站| 九九九九九九精品任你躁| 国产成人无码aa精品一区| 97se在线视频| 亚洲综合自拍| 欧美一级二区| 国产精品第一国产精品| 久久久精品区| 欧美中日韩免费视频| 天天综合天天综合色| 91免费国产在线观看| 日韩美女免费观看| 伊人再见免费在线观看高清版| 99久久婷婷国产综合精品电影√| 国产精品伦一区二区三区视频| 91av精品| 青青青国产在线| 污污视频在线免费| 国产成人精品亚洲线观看| 亚洲一级黄色片| 欧美寡妇偷汉性猛交| 黄色aaa级片| 99热这里都是精品| 亚洲国产精品久久久久爰色欲| 国产在线美女| 日本超碰在线观看| 美女黄色片网站| av免费网站在线观看| 日韩精选在线观看| 久久久久久久久网| 日韩av黄色| 欧美一区二区影院| 精品无码人妻一区二区三区| 久久日韩精品一区二区五区| 国产精品第10页| 麻豆精品视频在线观看视频| 中文字幕免费高清在线| 在线视频不卡一区二区三区| 超碰91人人草人人干| 人人妻人人玩人人澡人人爽| 欧美日韩dvd在线观看| 99在线免费观看| 91九色视频导航| 99热在线观看免费| jizz久久精品永久免费| 成人性生交视频免费观看| 日韩伦理视频| 国产一级电影网| 一起草最新网址| 日韩在线成人| 国产伦理一区二区三区| 黄色成人av网| 国产女主播视频一区二区| 精品调教chinesegay| 亚洲综合三区| 午夜精品在线视频一区| 国产主播一区二区| 国产欧美在线观看一区| 春意影院免费入口| 香蕉av一区二区三区| 亚洲五码在线| gogogogo高清视频在线| 亚洲成人观看| 手机在线色视频| 国产精品入口夜色视频大尺度| 国产毛片一区二区三区va在线| 天天色天天爱天天射综合| 亚洲成人精品久久久| 亚洲三级黄色片| 久久久久在线视频| 久久精品成人av| 老司机凹凸av亚洲导航| 亚洲天堂成人在线观看| 国产成人亚洲精品狼色在线| 成人精品视频一区二区| 亚洲一区二区精品在线| 色综合久久88色综合天天| 亚洲天堂二区| 黑巨茎大战欧洲金发美女| 亚洲欧洲国产专区| 二区三区在线| 极品白嫩的小少妇| av最新在线| 亚洲一二三在线观看| 精品国产青草久久久久福利| 亚洲精品动态| 懂色av.com| 欧美日韩综合一区| 精品福利一二区| 国产欧美一区二区精品秋霞影院| 日韩精品成人在线观看| 亚洲综合自拍网| 国产黄大片在线观看| 日本wwwwwwwzzzzz视频| 亚洲蜜臀av乱码久久精品蜜桃| 中文字幕免费高清在线| 亚洲一区二区伦理| 青青草偷拍视频| 国产伦精品一区二区三区四区视频_| 黄色www视频| 日韩不卡免费高清视频| 色呦呦在线播放| 国产成人av一区二区三区| 久久好看免费视频| 亚洲午夜久久久久久久久久久| 欧美日韩视频一区二区三区| 最近2019年中文视频免费在线观看| 欧美国产禁国产网站cc| 欧美激情视频网| 亚洲高清影视| 日韩精品a在线观看91| 欧美日韩中文字幕一区二区| 色婷婷综合缴情免费观看| 欧美日韩国产精品一区二区三区|