<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,  comments - 11,  trackbacks - 0

    JSP2.0中為了簡化標簽的復雜性,增加了制作Simple Tag的標簽類SimpleTagSupport類。
    SimpleTagSupport類是實現SimpleTag接口的。它只需要實現一個doTag()方法即可,而不需要一堆回傳值。

    舉例說明:
    例1:HelloSimpleTag標簽
    第一步:制作標簽處理類
    HelloSimpleTag.java

    package com.newould.taglib;

    import java.io.*;
    import javax.servlet.jsp.*;
    import javax.servlet.jsp.tagext.*;

    public class HelloSimpleTag extends SimpleTagSupport {

    public void doTag() throws JspException, IOException {
    ??
    ????? JspWriter out = getJspContext().getOut();
    ????? out.println("Hello Simple Tag");
    }
    }

    第二步:編寫標簽性質文件
    MyTaglib.tld

    <?xml version="1.0" encoding="UTF-8" ?>

    <taglib xmlns=" ?????? xmlns:xsi=" ?????? xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
    ?????? version="2.0">
    ????
    ?????? <description>My Taglib by JavaWorld.com.tw</description>
    ?????? <tlib-version>1.0</tlib-version>
    ?????? <jsp-version>2.0</jsp-version>
    ?????? <short-name>Mytaglib</short-name>
    ?????? <uri></uri>
    ......

    <tag>
    ???????? <description>Hello Simple Tag</description>
    ???????? <name>HelloSimpleTag</name>
    ???????? <tag-class>com.newould.taglib.HelloSimpleTag</tag-class>
    ???????? <body-content>empty</body-content>
    ?????? </tag>
    </taglib>

    第三步:編寫Jsp網頁
    HelloSimpleTag.jsp

    <%@ page contentType="text/html;charset=GB2312" %>
    <%@ taglib uri="/WEB-INF/tlds/MyTaglib.tld" prefix="mytag" %>

    <html>
    <head>
    <title>HelloSimpleTag.jsp</title>
    </head>
    <body>

    <h2>Simple Tag 標簽</h2>

    <h1><mytag:HelloSimpleTag /></h1>

    </body>
    </html>

    =================================================================

    例2:AddSimpleTag標簽
    第一步:制作標簽處理類
    AddSimpleTag.java

    package com.newould.taglib;

    import java.io.*;
    import javax.servlet.jsp.*;
    import javax.servlet.jsp.tagext.*;

    public class AddSimpleTag extends SimpleTagSupport {

    private int num1 = 0;
    private int num2 = 0;

    public void setNum1(int num1) {
    ????? this.num1 = num1;
    }

    public void setNum2(int num2) {
    ????? this.num2 = num2;
    }

    public void doTag() throws JspException, IOException {

    ????? JspContext ctx = getJspContext();
    ????? JspWriter out = ctx.getOut();
    ???
    ????? int sum = num1 + num2;
    ????? ctx.setAttribute("sum", Integer.toString(sum));
    ??
    ????? out.println(num1 + " + " + num2 + " = " + sum);
    }
    }

    第二步:編寫標簽性質文件
    MyTaglib.tld

    <?xml version="1.0" encoding="UTF-8" ?>

    <taglib xmlns=" ?????? xmlns:xsi=" ?????? xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
    ?????? version="2.0">
    ????
    ?????? <description>My Taglib by JavaWorld.com.tw</description>
    ?????? <tlib-version>1.0</tlib-version>
    ?????? <jsp-version>2.0</jsp-version>
    ?????? <short-name>Mytaglib</short-name>
    ?????? <uri></uri>
    ......

    <tag>
    ???????? <description>Add Simple Tag</description>
    ???????? <name>Add</name>
    ???????? <tag-class>com.newould.taglib.AddSimpleTag</tag-class>
    ???????? <body-content>empty</body-content>
    ??????
    ???????? <attribute>
    ?????????? <name>num1</name>
    ?????????? <required>true</required>
    ?????????? <rtexprvalue>true</rtexprvalue>
    ???????? </attribute>

    ???????? <attribute>
    ?????????? <name>num2</name>
    ?????????? <required>true</required>
    ?????????? <rtexprvalue>true</rtexprvalue>
    ???????? </attribute>
    ????????????
    ?????? </tag>
    ???
    </taglib>

    第三步:編寫Jsp網頁
    AddSimpleTag.jsp

    %@ page contentType="text/html;charset=GB2312" %>
    <%@ taglib uri="/WEB-INF/tlds/MyTaglib.tld" prefix="mytag" %>

    <html>
    <head>
    <title>AddSimpleTag.jsp</title>
    </head>
    <body>

    <h2>AddSimpleTag 標簽</h2>

    <h1><mytag:Add num1="5" num2="9" /></h1>

    最后結果:${sum}

    </body>
    </html>

    =================================================================

    例3 RepeatSimpleTag標簽
    RepeatSimpleTag標簽 主要是用來重復顯示某段文字。
    這個例子在處理上與前兩個例子有點不同

    第一步:制作標簽處理類
    RepeatSimpleTag.java

    package com.newould.taglib;

    import java.io.*;
    import javax.servlet.jsp.*;
    import javax.servlet.jsp.tagext.*;

    public class RepeatSimpleTag extends SimpleTagSupport {

    private int count = 0;//重復的次數
    private JspFragment fragment;//重復的內容

    public void setCount(int count) {
    ????? this.count = count;
    }

    public void setFragment(JspFragment fragment) {
    ????? this.fragment = fragment;
    }

    public void doTag() throws JspException, IOException {

    ????? JspContext ctx = getJspContext();
    ????? JspWriter out = ctx.getOut();
    ???
    ????? for(int i=0 ; i<count ; i++) {
    ?????? fragment.invoke(null);//表示將fragment的內容顯示出來
    ????? }
    }
    }

    第二步:編寫標簽性質文件
    MyTaglib.tld

    <?xml version="1.0" encoding="UTF-8" ?>

    <taglib xmlns=" ?????? xmlns:xsi=" ?????? xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee web-jsptaglibrary_2_0.xsd"
    ?????? version="2.0">
    ????
    ?????? <description>My Taglib by JavaWorld.com.tw</description>
    ?????? <tlib-version>1.0</tlib-version>
    ?????? <jsp-version>2.0</jsp-version>
    ?????? <short-name>Mytaglib</short-name>
    ?????? <uri></uri>
    ......

    <tag>
    ???????? <description>Repeate Simple Tag</description>
    ???????? <name>Repeat</name>
    ???????? <tag-class>com.newould.taglib.RepeatSimpleTag</tag-class>
    ???????? <body-content>empty</body-content>
    ??????
    ???????? <attribute>
    ?????????? <name>count</name>
    ?????????? <required>true</required>
    ?????????? <rtexprvalue>true</rtexprvalue>
    ???????? </attribute>

    ???????? <attribute>
    ?????????? <name>fragment</name>
    ?????????? <required>true</required>
    ?????????? <fragment>true</fragment>
    ???????? </attribute>
    ?????? </tag>????
    ???
    </taglib>

    注意:<fragment>true</fragment>,一定要這樣設定fragment屬性。

    第三步:編寫Jsp網頁
    RepeatSimpleTag.jsp

    <%@ page contentType="text/html;charset=GB2312" %>
    <%@ taglib uri="/WEB-INF/tlds/MyTaglib.tld" prefix="mytag" %>

    <html>
    <head>
    <title>RepeatSimpleTag.jsp</title>
    </head>
    <body>

    <h2>RepeatSimpleTag 標簽</h2>

    <mytag:Repeat count="5" >
    <jsp:attribute name="fragment">
    重復執行 ....<br>
    </jsp:attribute>
    </mytag:Repeat>
    </body>
    </html>

    =================================================================

    DynamicAttributes接口
    只要制作的標簽實現了DynamicAttributes接口就有動態屬性的功能。
    例如:我們要做多個數的累加運算,則AddSimpleTag標簽就可以通過實現DynamicAttributes接口就可以實現了.

    實現DynamicAttributes接口,必須實現setDynamicAttributes()方法,此方法用來接收動態屬性.

    舉例:第一步:制作標簽處理類

    package com.newould.taglib;

    import java.io.*;
    import java.util.*;
    import javax.servlet.jsp.*;
    import javax.servlet.jsp.tagext.*;

    public class DynamicAdd extends SimpleTagSupport implements DynamicAttributes {

    //用來接收動態屬性
    private ArrayList keys = new ArrayList();
    private ArrayList values = new ArrayList();

    public void doTag() throws JspException, IOException {

    ????? JspContext ctx = getJspContext();
    ????? JspWriter out = ctx.getOut();
    ???
    ????? float num = 0;
    ????? float sum = Float.parseFloat((String)values.get(0));
    ????? out.print(sum);
    ???
    ????? for (int i = 1 ; i < keys.size() ; i++) {
    ?????? String temp = (String)values.get(i);
    ?????? num = Float.parseFloat(temp);
    ?????? sum = sum + num;
    ?????? out.print(" + " + num);
    ????? }
    ???
    ????? out.print(" = " + sum);
    ????? ctx.setAttribute("sum", Float.toString(sum));
    ???
    }

    public void setDynamicAttribute(String uri, String name, Object value) throws JspException {
    ????? keys.add(name);
    ????? values.add(value);
    }
    }

    第二步:編寫標簽性質文件
    <tag>
    ???????? <description>DynamicAttribute</description>
    ???????? <name>DynAdd</name>
    ???????? <tag-class>com.newould.taglib.DynamicAdd</tag-class>
    ???????? <body-content>empty</body-content>

    ???????? <dynamic-attributes>true</dynamic-attributes>
    ?????? </tag>????

    第三步:編寫Jsp網頁
    <%@ page contentType="text/html;charset=GB2312" %>
    <%@ taglib prefix="JSPBook" tagdir="/WEB-INF/tags/" %>
    <%@ taglib prefix="c" uri="

    <html>
    <head>
    <title>CH16 - DynAdd.jsp</title>
    </head>
    <body>

    <h2>Tag File 范例</h2>

    <JSPBook:DynAdd num1="111" num2="222" num3="444" >

    <jsp:attribute name="great">
    ????? <font color="red">SUM:${sum} ...</red>
    </jsp:attribute>
    <jsp:attribute name="less">
    ????? <font color="blue">SUM:${sum} ...</red>
    </jsp:attribute>
    </JSPBook:DynAdd>

    </body>
    </html>
    JSP2.0中為了簡化標簽的復雜性,增加了制作Simple Tag的標簽類SimpleTagSupport類。
    SimpleTagSupport類是實現SimpleTag接口的。它只需要實現一個doTag()方法即可,而不需要一堆回傳值。


    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 亚洲一区在线视频| 日产亚洲一区二区三区| 国产精品亚洲精品爽爽| 搡女人免费视频大全| 亚洲精品一卡2卡3卡四卡乱码| 久九九精品免费视频| 亚洲国产精品免费观看| 最近免费中文字幕4| 亚洲熟妇无码八V在线播放| 免费无遮挡无码视频网站| 337P日本欧洲亚洲大胆精品| 在线观看永久免费视频网站| 国产成人亚洲综合a∨| 在线观看国产区亚洲一区成人| a级毛片在线免费观看| 黄色一级免费网站| www.亚洲色图.com| 国产日韩在线视频免费播放| 久久亚洲国产中v天仙www| 久久午夜伦鲁片免费无码| 久久精品国产亚洲av麻豆蜜芽| 青青草国产免费久久久下载| 黄色网址免费在线| 亚洲国产精彩中文乱码AV| 中文字幕乱码免费视频| 亚洲JIZZJIZZ妇女| 亚洲精品美女久久久久99| 午夜不卡久久精品无码免费| 亚洲国产激情在线一区| 日产国产精品亚洲系列| 久久久久久毛片免费播放| 亚洲精品一卡2卡3卡四卡乱码 | 国产成人免费A在线视频| 高清永久免费观看| 情侣视频精品免费的国产| 一区二区三区视频免费| 中文字幕亚洲色图| 国产在线观看免费不卡| 免费国产成人α片| 亚洲av日韩综合一区二区三区| 亚洲中久无码永久在线观看同|