JavaWeb基礎—JSP自訂標籤入門

來源:互聯網
上載者:User

標籤:擷取   tle   頁面   ast   end   檔案內容   內容   java代碼   required   

自訂標籤的作用:替換JSP頁面的java代碼

步驟:1.標籤處理類(標籤是一個對象,那也就需要先有類)  

   2.tld檔案 它是一個xml(可以向c標籤裡借),一般放到WEB-INF下,不讓用戶端瀏覽器看到
      核心配置<tag>
        <name>myTag</name>
        <tag-class>com.jiangbei.tag.MyTag</tag-class>
        <body-content>empty</body-content>
          </tag>
        【注意tag-class裡面的對應的類記得改!】
   3.使用<%@taglib%>指定tld檔案路徑

  例如:

    標籤處理類:

public class MyTag implements SimpleTag{    private PageContext pageContext;    private JspFragment body;        @Override    public void doTag() throws JspException, IOException {        // 想要向頁面輸出,需要out,pageContext一個頂九個,可以得到out        pageContext.getOut().print("Hello World");            }    @Override    public JspTag getParent() {        // TODO Auto-generated method stub        return null;    }    @Override    public void setJspBody(JspFragment jspBody) {        this.body = jspBody;            }    @Override    public void setJspContext(JspContext pc) {        //伺服器傳過來給他儲存起來        this.pageContext = (PageContext) pc;            }    @Override    public void setParent(JspTag parent) {        // TODO Auto-generated method stub            }}

 在此目錄下建立tld檔案

檔案內容如下:

<?xml version="1.0" encoding="UTF-8" ?><taglib xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-jsptaglibrary_2_1.xsd"    version="2.1">    <tlib-version>1.0</tlib-version>    <short-name>itcast</short-name>    <uri>http://www.itcast.cn/tags/1.0</uri>    <tag>        <name>myTag</name>        <tag-class>com.jiangbei.tag.MyTag</tag-class>        <body-content>empty</body-content>    </tag>    <tag>        <name>myTag2</name>        <tag-class>com.jiangbei.tag.MyTag2</tag-class>        <body-content>empty</body-content>    </tag>    <tag>        <name>myTag3</name>        <tag-class>com.jiangbei.tag.MyTag3</tag-class>        <body-content>scriptless</body-content>    </tag>        <tag>        <name>myTag4</name>        <tag-class>com.jiangbei.tag.MyTag4</tag-class>        <body-content>scriptless</body-content>        <attribute>            <name>test</name>            <required>true</required>            <rtexprvalue>true</rtexprvalue>        </attribute>    </tag></taglib>

直接繼承類而避免直接實現介面:

  

public class MyTag3 extends SimpleTagSupport{    @Override    public void doTag() throws JspException, IOException {        //擷取流,為了執行的參數輸出        Writer out = this.getJspContext().getOut();        out.write("********************<br/>");        //執列標籤體內容,寫到指定的流中(頁面上)        this.getJspBody().invoke(out);        out.write("<br/>********************");    }    }

 

 

標籤處理類(JspFragment jsp片段,就是內容)
實現simpleTag介面:5個方法(當然不會你自己調用,tomcat幫你調用)
doTag()每次執列標籤時都會調用這個方法,會在其它方法之後被tomcat調用
set/getParent 操作父標籤的方法,其中get為非聲明周期方法
setJspBody(JspFragment jspBody)
void setJspContext(JspContext pc)
當然,有時候實現介面是非常不方便的,於是就有了一個類給我們繼承
SimpleTagSupport,已經幫我們把東西都存好了,並且提供了get方法
供子類調用
標籤體內容支援的類型
empty
JSP:已經不支援!(標籤體內容可以是JAVA指令碼、EL運算式等)
scriptless 是EL運算式(當然一般字元串也是可以得)
第四種無用!

可以使用在標籤處理類doTag()方法中throw new SkipPageException,
tomcat認識這個標籤,它會進行捕獲。後面的不會再執行
work目錄下看真身可以看到實現究竟

可以給標籤添加屬性:
給標籤處理類添加屬性
在tld檔案中對屬性進行配置(都見WEB-INF下的tlds的itcast_tld)
rtexprvalue:運行時運算式值,就是可不可以是EL運算式值

 

JavaWeb基礎—JSP自訂標籤入門

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.