国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > JSP > 正文

JSP的taglib示例

2019-11-14 23:27:46
字體:
來源:轉載
供稿:網友
jsp的taglib示例 Posted on 2015-03-26 11:51 思思博士 閱讀(...) 評論(...) 編輯 收藏

web.xml

 1 <?xml version="1.0" encoding="UTF-8"?> 2 <web-app version="2.4" xmlns="http://java.sun.com/xml/ns/j2ee" 3     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4     xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee                                                 5     http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"> 6  7     <jsp-config> 8         <taglib> 9             <taglib-uri>/WEB-INF</taglib-uri>10             <taglib-location>/WEB-INF/mytag.tld</taglib-location>11         </taglib>12     </jsp-config>13 </web-app>

mytag.tld

 1 <?xml version="1.0" encoding="UTF-8"?>  2 <taglib>  3    <tlibversion>1.0</tlibversion>  4    <jspversion>1.1</jspversion>  5     6   <tag>  7     <name>displayDate</name>  8     <tagclass>gys.DateTagNoBody</tagclass>  9     <bodycontent>empty</bodycontent>     <!-- 標簽體之間的內容要為空 -->10   </tag>  11   <tag> 12     <name>displayDateTwo</name> 13     <tagclass>gys.DateTagAttribute</tagclass> 14     <bodycontent>empty</bodycontent>    <!-- 標簽體之間的內容要為空 -->15     <!-- 定義屬性 -->  16     <attribute>  17        <name>pattern</name> <!-- 屬性名字 -->  18        <type>String</type>  <!-- 屬性類型 -->  19        <requried>false</requried> <!-- 是否必須 -->  20        <rtexPRvale>false</rtexprvale> <!-- 表示是否可以使用JSP表達式  -->  21       </attribute>22   </tag>23         24   <tag> 25     <name>iterator</name> 26     <tagclass>gys.BodyTag</tagclass> 27     <bodycontent>jsp</bodycontent> 28     <!-- 定義屬性 --> 29     <attribute> 30        <name>count</name> <!-- 屬性名字 --> 31        <type>int</type>  <!-- 屬性類型 --> 32        <requried>false</requried> <!-- 是否必須 --> 33        <rtexprvale>false</rtexprvale> <!-- 表示是否可以使用JSP表達式  --> 34   </attribute> 35   </tag> 36   37 </taglib> 

BodyTag.java

 1 package gys; 2  3 import java.io.IOException; 4 import java.text.SimpleDateFormat; 5 import java.util.Date; 6  7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.jsp.JspException; 9 import javax.servlet.jsp.JspWriter;10 import javax.servlet.jsp.tagext.BodyContent;11 import javax.servlet.jsp.tagext.BodyTagSupport;12 13 public class BodyTag extends BodyTagSupport {14 15 //    執(zhí)行順序16 //17 //    doStartTag()->setBodyContent()->doInitBody()->doAfterTag()->doEndTag()18 //19 //    如果doStartTag()返回的是EVAL_BODY_INCLUDE執(zhí)行doAfterTag()方法,20 //21 //    如果它返回SKip_BODY就執(zhí)行doEndTag()方法。22 //23 //    setBodyContent()方法用于設置標簽體內容,如果在計算BodyContent時需要進行一些初始化工作,24 //25 //    則在doInitBody()方法中完成。標簽體內容執(zhí)行完后,會調用doAfterBody()方法26 //27 //    在doAfterTag()方法中返回EVAL_BODY_AGAIN來重復執(zhí)行doAfterTag()方法28 //29 //    返回SKIP_BODY值則執(zhí)行doEndTag()方法。30 //31 //    在doEndTag()方法中返回EVAL_PAGE值,則執(zhí)行此標簽的后的其它代碼,32 //33 //    返回SKIP_PAGE則不執(zhí)行此頁面的其它代碼。34     35     private int count;36 37     private HttpServletRequest reqeust;38 39     private JspWriter out;40 41     public void init() {42         reqeust = (HttpServletRequest) pageContext.getRequest();43         out = pageContext.getOut();44     }45 46     @Override47     public int doStartTag() throws JspException {48         init();49         return this.EVAL_BODY_INCLUDE;//執(zhí)行doAterTag()方法50     }51 52     // 設置當前標簽體53     @Override54     public void setBodyContent(BodyContent bodyContent) {55         this.bodyContent = bodyContent;56         //System.out.println("setBodyContent...");57     }58 59     // 需要初始化bodyContent60     @Override61     public void doInitBody() throws JspException {62         System.out.println("init.....");63     }64 65     @Override66     public int doAfterBody() throws JspException {67         if (count >= 1) {68             try {69                 out.println(count);70                 out.println("<Br>");71             } catch (IOException e) {72                 e.printStackTrace();73             }74             count--;75             return this.EVAL_BODY_AGAIN;//在doAfterBody中返回,會重復執(zhí)行doAfterBody方法76         } else {77             return this.SKIP_BODY;//執(zhí)行doEndTag78         }79     }80 81     @Override82     public int doEndTag() throws JspException {83         SimpleDateFormat formater = new SimpleDateFormat("yyyy-MM-dd");84         String date = formater.format(new Date());85         try {86             out.print(date);87         } catch (IOException e) {88             e.printStackTrace();89         }90         return this.EVAL_PAGE;//不執(zhí)行此頁面的其它代碼91     }92 93     // 必須實現setXX()方法94     public void setCount(int count) {95         System.out.println("count........");96         this.count = count;97     }98 }

DateTagAttributr.java

 1 package gys; 2  3 import java.io.IOException; 4 import java.text.SimpleDateFormat; 5 import java.util.Date; 6  7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.jsp.JspException; 9 import javax.servlet.jsp.JspWriter;10 import javax.servlet.jsp.tagext.Tag;11 import javax.servlet.jsp.tagext.TagSupport;12 13 public class DateTagAttribute extends TagSupport {14 15     private String pattern;16 17     @Override18     public int doStartTag() throws JspException {19         HttpServletRequest request;20         // 是TagSupport類中定義的一個屬性,它是javax.servlet.jsp.PageContext的對象21         request = (HttpServletRequest) pageContext.getRequest();22         SimpleDateFormat formater = new SimpleDateFormat(pattern);23         String date = formater.format(new Date());24         JspWriter out = pageContext.getOut();25         try {26             out.print(date);27         } catch (IOException e) {28             e.printStackTrace();29         }30         // doStartTag() 方法返回 SKIP_BODY 。當然其原因是我們的簡單日期標記沒有正文。31         return Tag.SKIP_BODY;32     }33 34     // 必須實現setXX()方法35     public void setPattern(String pattern) {36         this.pattern = pattern;37     }38 }

DateTagNoBody.java

 1 package gys; 2  3 import java.io.IOException; 4 import java.text.SimpleDateFormat; 5 import java.util.Date; 6  7 import javax.servlet.http.HttpServletRequest; 8 import javax.servlet.jsp.JspException; 9 import javax.servlet.jsp.JspWriter;10 import javax.servlet.jsp.tagext.Tag;11 import javax.servlet.jsp.tagext.TagSupport;12 13 public class DateTagNoBody extends TagSupport {14 15     @Override16     public int doStartTag() throws JspException {17         HttpServletRequest request=(HttpServletRequest)pageContext.getRequest();18         SimpleDateFormat formater=new SimpleDateFormat("yyyy-MM-dd");19         String date=formater.format(new Date());20         JspWriter out=pageContext.getOut();21         try{22             out.print(date);23         }24         catch(IOException e){25             e.printStackTrace();26         }27         return Tag.SKIP_BODY;28     }29 30 }

運行結果:


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 乐安县| 乌拉特后旗| 滁州市| 樟树市| 芷江| 仪征市| 湘潭市| 馆陶县| 白水县| 庄河市| 犍为县| 容城县| 元江| 固原市| 礼泉县| 巫山县| 胶州市| 娄烦县| 榆林市| 邳州市| 通山县| 喀喇沁旗| 阿合奇县| 英德市| 台江县| 乐清市| 兴文县| 湟中县| 鄂尔多斯市| 永德县| 冷水江市| 石嘴山市| 易门县| 会泽县| 韩城市| 普格县| 闽侯县| 金塔县| 鄢陵县| 汝阳县| 玉溪市|