亚洲综合原千岁中文字幕_国产精品99久久久久久久vr_无码人妻aⅴ一区二区三区浪潮_成人h动漫精品一区二区三

主頁 > 知識庫 > JSP自定義標簽-標簽屬性_動力節點Java學院整理

JSP自定義標簽-標簽屬性_動力節點Java學院整理

熱門標簽:電話機器人需要使用網絡嗎 海外圖書館地圖標注點 潤滑油銷售電銷機器人 電銷機器人免培訓 外呼系統使用方法 南通通訊外呼系統產品介紹 自繪地圖標注數據 給地圖標注得傭金 如何看懂地圖標注點

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

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

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

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

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

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

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

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

 package com.bjpowernode.simpletag;
 public class LoopTagBody extends SimpleTagSupport {
   private int count; //定義一個屬性,用來指定循環次數
   public void setCount(int count) {  //為該屬性設置setter方法
     this.count = count;
   }
   @Override
   public void doTag() throws JspException, IOException {  
     JspFragment fragment = this.getJspBody();
     for(int i=0;ithis.count;i++) {  //使用屬性就可以指定循環次數
       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頁面的開頭導入taglib指令:

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

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

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

在瀏覽器中觀察: 

 

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

例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文件中描述(這里省略首尾,詳細內容請看例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頁面中導入taglib指令(此處略)后,在JSP頁面的主體中使用剛才定義的簡單標簽:

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

在瀏覽器中觀察:  

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

簡單標簽的應用,包括無屬性的和帶屬性的標簽如何使用都已經學習完畢,內容就這么多,剩下的就可以根據所學的進行開發了。

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

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

編寫標簽處理器類:

 package com.bjpowernode.simpletag;
 public class RefererTag extends SimpleTagSupport {
   private String site; //指定允許來訪請求的網址
   private String location;    //若非指定來訪請求的網址應該先跳轉到哪里去   
   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文件中描述(這里省略首尾,詳細內容請看例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頁面中導入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>

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

例4:使用簡單標簽將標簽體中的HTML過濾轉義

編寫標簽處理器類:

 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("lt;");
         break;
       case '>':
         result.append("gt;");
         break;
       case '':
         result.append("");
         break;
       case '"':
         result.append("quot;");
         break;
       default:
         result.append(content[i]);
       }
     }
     return (result.toString());
   }
 }

  其中過濾方法filter方法可以在Tomcat中參考代碼(位置:【Tomcat】--->【webapps】--->【examples】--->【WEB-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>

瀏覽器中觀察:

您可能感興趣的文章:
  • 詳解Java讀取本地文件并顯示在JSP文件中
  • JAVA JSP頁面技術之EL表達式整理歸納總結
  • jsp servlet javaBean后臺分頁實例代碼解析
  • springmvc無法訪問/WEB-INF/views下的jsp的解決方法
  • 詳解直接訪問WEB-INF目錄下的JSP頁面的方法
  • Java項目中如何訪問WEB-INF下jsp頁面

標簽:黃石 銅川 南京 樂山 大連 內江 貸款邀約 廣州

巨人網絡通訊聲明:本文標題《JSP自定義標簽-標簽屬性_動力節點Java學院整理》,本文關鍵詞  JSP,自定義,標簽,屬性,動力,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《JSP自定義標簽-標簽屬性_動力節點Java學院整理》相關的同類信息!
  • 本頁收集關于JSP自定義標簽-標簽屬性_動力節點Java學院整理的相關信息資訊供網民參考!
  • 推薦文章
    成人影院一区二区三区| 可以免费在线看黄的网站| 日韩专区在线播放| 亚洲精品影院一区二区| 成人av在线播放| 午夜在线亚洲男人午在线| 日韩一级黄色片| 麻豆网站在线看| 成人免费一级纶理片| 99久久精品国产免费| 999精品视频在线| 免费一级生活片| 美女免费毛片| 青青青草影院 | 亚洲精品久久玖玖玖玖| 中文字幕一区二区三区 精品| 日本伦理黄色大片在线观看网站| 99热精品在线| 黄色福利片| 你懂的在线观看视频| 国产麻豆精品视频| 欧美激情影院| 午夜激情视频在线观看| 中文字幕Aⅴ资源网| 成人高清免费| 精品久久久久久中文字幕一区| 精品国产一区二区三区久久久蜜臀| 精品久久久久久免费影院| 国产成人啪精品视频免费软件| 国产网站免费在线观看| 日韩免费在线视频| 国产a网| 国产网站免费在线观看| 你懂的福利视频| 久久成人亚洲| 日日夜人人澡人人澡人人看免| 91麻豆国产福利精品| 亚洲 欧美 成人日韩| 国产国产人免费视频成69堂| 国产一区二区精品| 九九干| 国产一区二区高清视频| 亚洲女人国产香蕉久久精品| 成人高清免费| 你懂的福利视频| 精品视频在线观看一区二区三区| 一级片片| 国产国产人免费视频成69堂| 精品视频免费观看| 日韩av片免费播放| 欧美一级视频免费观看| 91麻豆精品国产自产在线观看一区| 欧美一区二区三区性| 国产亚洲精品aaa大片| 欧美激情中文字幕一区二区| 国产高清在线精品一区a| 91麻豆国产福利精品| 日本免费乱理伦片在线观看2018| 成人免费一级纶理片| 国产视频一区二区三区四区| 国产激情视频在线观看| 黄色免费三级| 99色视频在线| 精品久久久久久中文| 99热精品在线| 国产一区二区高清视频| 欧美18性精品| 可以免费在线看黄的网站| 午夜激情视频在线观看| 日本特黄特色aa大片免费| 日韩在线观看视频免费| 欧美激情一区二区三区在线播放| 日本伦理黄色大片在线观看网站| 亚洲精品影院一区二区| 国产精品12| 国产不卡高清在线观看视频| 日日夜人人澡人人澡人人看免| 九九精品久久| 国产网站免费在线观看| 成人免费福利片在线观看| 免费一级片网站| 色综合久久久久综合体桃花网| 日本在线不卡视频| 美女免费精品高清毛片在线视| a级毛片免费全部播放| 国产一区精品| 日韩女人做爰大片| 欧美一级视频免费观看| 成人高清视频在线观看| 久久国产影视免费精品| 香蕉视频三级| 国产精品免费久久| 韩国三级香港三级日本三级| 欧美爱色| 久久国产精品自线拍免费| 日本特黄特色aa大片免费| 九九精品影院| 国产美女在线一区二区三区| 可以免费在线看黄的网站| 中文字幕一区二区三区 精品| 九九九国产| 久久久久久久免费视频| 午夜激情视频在线观看| 国产一区二区高清视频| 日韩在线观看免费完整版视频| 国产一区免费在线观看| 天天色色网| 日韩专区在线播放| 久久久久久久免费视频| 九九九国产| 欧美a级v片不卡在线观看| 国产伦精品一区三区视频 | 日本免费乱理伦片在线观看2018| 国产网站免费| 亚欧乱色一区二区三区| 国产网站免费| 日本免费乱理伦片在线观看2018| 国产91丝袜在线播放0| 国产精品1024永久免费视频 | 国产视频一区二区三区四区| 国产成人欧美一区二区三区的| 九九精品影院| 青草国产在线| 尤物视频网站在线观看| 中文字幕一区二区三区 精品| 天天做人人爱夜夜爽2020毛片| 四虎论坛| 色综合久久天天综合绕观看| 久久成人亚洲| 999久久久免费精品国产牛牛| 国产亚洲精品aaa大片| 91麻豆国产福利精品| 久久99爰这里有精品国产| 国产不卡高清在线观看视频| 国产一区免费在线观看| 精品视频在线看 | 日本在线不卡视频| 国产一区二区精品久久| 国产91精品一区二区| 国产国产人免费视频成69堂| 国产不卡高清在线观看视频| 精品久久久久久免费影院| 成人免费福利片在线观看| 欧美a级大片| 免费国产在线视频| 日日夜人人澡人人澡人人看免| 亚洲精品久久玖玖玖玖| 香蕉视频三级| 国产网站免费在线观看| 人人干人人草| 亚洲 国产精品 日韩| 四虎论坛| 国产精品1024永久免费视频 | 一级毛片视频免费| 国产伦久视频免费观看视频| 999久久久免费精品国产牛牛| 免费国产在线观看| 国产亚洲男人的天堂在线观看| 精品视频在线观看免费| 日韩欧美一及在线播放| 欧美1区| 亚洲 欧美 成人日韩| 天天做人人爱夜夜爽2020毛片| 美女免费精品高清毛片在线视| 日韩欧美一及在线播放| 天天做人人爱夜夜爽2020毛片| 韩国三级香港三级日本三级| 免费国产在线视频| 国产麻豆精品视频| 青青久久精品国产免费看| 久久久久久久网| 午夜激情视频在线观看| 精品国产一区二区三区久久久狼 | 91麻豆国产福利精品| a级精品九九九大片免费看| 91麻豆国产福利精品| 欧美激情一区二区三区视频 | 欧美国产日韩一区二区三区| 欧美另类videosbestsex久久| 免费一级生活片| 久久成人亚洲| 久久精品免视看国产成人2021| 日本伦理黄色大片在线观看网站| 青草国产在线| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 美女免费毛片| 欧美激情一区二区三区视频高清| 九九免费高清在线观看视频| 久久精品店| 999久久久免费精品国产牛牛| 午夜在线观看视频免费 成人| 精品视频一区二区三区免费| 国产高清视频免费观看| 91麻豆爱豆果冻天美星空| 成人影视在线播放| 四虎论坛| 一级女性全黄久久生活片| 91麻豆精品国产片在线观看| 国产综合91天堂亚洲国产| 国产麻豆精品免费密入口|