JSP標籤體系及自訂JSP標籤

來源:互聯網
上載者:User

 一 . JSP標籤體系

 

二 . 標籤的執行流程:

 

 

三.自訂標籤;

3.1 自訂標籤的主要作用:移除jsp中的java指令碼。它屬於jsp的技術

3.2、編寫一個自訂標籤的步驟:(傳統標籤的定義)
3.3寫一個類,直接或間接實現javax.servlet.jsp.tagext.Tag。一般通過繼承TagSupport來間接實現Tag介面
  
 3.4、覆蓋掉父類中的對應方法
 package com.itheima;

 import java.io.IOException;
 import java.io.PrintWriter;

 import javax.servlet.ServletRequest;
 import javax.servlet.jsp.JspException;
 import javax.servlet.jsp.JspWriter;
 import javax.servlet.jsp.tagext.TagSupport;

 public class ShowIpTag extends TagSupport {

  @Override
  public int doStartTag() throws JspException {
   ServletRequest request = pageContext.getRequest();
   String ip = request.getRemoteAddr();
   JspWriter out = pageContext.getOut();
   try {
    out.write(ip);
   } catch (IOException e) {
    e.printStackTrace();
   }
   return super.doStartTag();
  }
  
 }
 3.5在WEB-INF下面建立一個副檔名為tld的xml檔案,對自訂的標籤處理類進行描述
  <?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/j2eehttp://java.sun.com/xml/ns/j2ee/web-jsptaglibrary_2_0.xsd"
   version="2.0">
   <description>slkdjfdsjfdsfjlks.</description>
   <tlib-version>1.0</tlib-version>
   <short-name>itheima</short-name>
   <uri>http://www.itheima.com/jsp/myjstl</uri>
   <tag>
    <description>show remote ip</description>
    <name>showIp</name>
    <tag-class>com.itheima.ShowIpTag</tag-class>
    <body-content>empty</body-content>
   </tag>
  </taglib>
 3.6、在jsp中通過taglib指令引入自訂的標籤,然後使用

 

四、簡單標籤
1、一般需要繼承SimpleTagSupport,然後覆蓋掉doTag方法即可
2、
a、控制部分內容不輸出
 <demo1>
  abcd
 </demo1>

 doTag()方法什麼都不做。
 如果要輸出的話:getJspBody().invoke(null)
b、控制標籤後面的jsp內容不輸出
 throw new SkipPageException();
c、控制主體內容重複執行
 在doTag方法中迴圈調用getJspBody().invoke(null)
 屬性:要有setter方法,同時也要在tld檔案中進行描述
d、修改主體內容後再輸出
 getJspBody().invoke(null) 要吧內容輸出到一個有緩衝的流中。
 StringWriter
 修改後再通過((PageContext)getJspContext).getWrtier()輸出

五、tld檔案的主要標籤和屬性
 short-name:引用標籤的首碼
 uri:tld檔案要綁定到一個uri的地址。可以立即為幫到一個名稱空間上
 tag:描述標籤
  name:標籤的名字
  tag-class:標籤對應的標籤處理類的全名
  body-content:標籤主體內容的類型
   empty:沒有主體內容
   JSP:有主體內容(用於傳統標籤)
   scriptless:有主體內容(用於簡單標籤)
  attribute:描述標籤的屬性
   name:屬性名稱
   required:是否是必須的屬性
   rtexprvalue:屬性的取值是否支援運算式(EL和Java運算式)

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.