JSP - Skapa Custom Tags

JSP Tags fungerar som en plugin till din JSP-sidor. Dessa är i grunden Java-klasser för att få utföras när JSP-sidan får återges av server och webbläsare. JSP kommer med i build Taggar vilja jsp: include, JSP: framåt, men de är inte tillräckliga för att tillgodose Web World. Att lösa detta problem kan du designa taggar som baseras på ditt företags krav. Denna artikel kommer att guida dig hur vi kan skapa ett anpassade taggar i JSP.

JSP Custom Tags:
Alla JSP Custom Tags genomför Tag Interface. För att veta mer information om Tag Interface hänvisa till JSP Custom Tag Interface. Men vi inte direkt använder taggen Interface istället använder vi TagSupport och BodyTagSupport, detta eftersom vissa standard genomförs Tag Interface redan genomförts i TagSupport och BodyTagSupport så det blir lättare att skriva kod custom tag.

Skillnad mellan TagSupport och BodyTagSupport:
I TagSupport vi definiera alla de attribut som krävs för att visa data om det som i BodyTagSupport vi passerar attribut och kropp innehåll till JSP Tag. BodyTagSupport används inte ofta om du inte vill manipulera kroppen innehåll. Passing attribut till anpassade taggar är inte obligatoriskt.

Exempel på TagSupport:

  <test :showTime /> 

Exempel på BodyTagSupport:

  <test :showTime>
 Aktuell tid:
 </ test> 

Din e-post:


Om du ser i BodyTagSupport vi passerar något kropp innehåll till XML-tagg. Även kroppen innehåll är inte obligatoriskt men det kommer att försämra prestanda om du inte använder kroppen för din custom tag och du inte använder TagSupport.

Viktig funktion Ring i JSP Custom Tag Code:
doStartTag ():
Denna funktion får kallas när jsp taggen få initieras. Denna funktion ett heltal som definieras redan i Tag gränssnittet i form av varierande namn. Vi återvänder normalt SKIP_BODY. SKIP_BODY berättar jsp motorn att hoppa över själva JSP taggen.

doEndTag ():
Denna funktion får kallas just efter doStartTag () funktion bearbetningen sker. Liknande doStartTag () denna funktion också returnerar ett heltal. Normalt vi återvänder EVAL_BODY. EVAL_BODY berättar jsp motorn att bearbeta de återstående JSP koden.

Enkel Custom Tag Code:

  1
 2
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
  ; paketet com.hiteshagrawal;

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

 TagSupport { public class Test sträcker TagSupport (
    doStartTag ( ) throws JspException { public int doStartTag () throws JspException (
       try (
    	   ( ) ; JspWriter out = pageContext. GetOut ();
    	   "This is my first tag!" ) ; ut. print ( "Detta är mitt första tag!");
       ( IOException ioe ) { ) Catch (IOException OIE) (
      	  ; OIE. printStackTrace ();
          "IOException while writing data to page" + ioe. getMessage ( ) ) ; throw new JspException ( "IOException medan data skrivs till sida" + OIE. getMessage ());
       )
       return SKIP_BODY;
    )

    doEndTag ( ) throws JspException { public int doEndTag () throws JspException (
      return EVAL_PAGE;
    )
 ) 

Kod Förklaring:

  • Klass utökar TagSupport anger vi inte använder BodyTagSupport klass.
  • doStartTag () Funktion skriver en sträng innehåll med pageContext.getOut (), detta till resultat som kommer att få ett skriftligt på JSP-sidan.
  • doStartTag () returnerar SKIP_BODY. Värdet för denna variabel definieras redan i Tag Interface.
  • doEndTag () returnerar EVAL_PAGE. Värdet för denna variabel definieras redan i Tag Interface.

Genomföra JSP Tag Javakod i JSP:
Nu är vårt nästa steg skulle vara att skapa en Tag Library Descriptor (TLD) fil. Denna fil berättar JSP Engine om JSP Custom Tag som får användas inom JSP koden.

  = "ISO-8859-1" ?> <? Xml version = "1.0" encoding = "ISO-8859-1"?>
 <! DOCTYPE taglib PUBLIC "- / / Sun Microsystems, Inc. / / DTD JSP Tag Library 1.2 / / EN" "http://java.sun.com/dtd/web-jsptaglibrary_1_2.dtd">
 <taglib>
	 1.0 </tlib > <tlib -version> 1.0 </ tlib>
	 1.2 </jsp > <jsp -version> 1.2 </ jsp>
	 test </short > <short -name> test </ short>

	 <tag>
		 <name> TestingTag </ name>
    		 <tagclass> com.hiteshagrawal.Test </ tagclass>
    		 <bodycontent> Töm </ bodycontent>
	 </ tag>
 </ taglib> 

Om du ser jag har definierat en toppdomän fil för ovan skriven JSP-kod. Anpassade JSP-taggen ska skrivas innanför "tag" element. Låt mig explaing skriftliga xml-fil:

  • tlib-version - Som namnet antyder den hänvisar till Tag Library Version
  • JSP-version - Avser JSP-version du använder
  • short-name - Avser namnet på JSP Custom Tag att din JSP kod att hänvisa till
  • namn - Avser namnet Custom Tags
  • tagclass - Refersn till klassen konstruktion som används för din JSP Märken
  • bodycontent - Den används i fall vi använder BodyTagSupport i TagSupport vi behålla denna tomma

Spara denna TLD fil med namnet test.tld inuti din WEB-INF-mappen.

Referens TLD Fil i JSP Sida:
Det finns flera sätt att refererence toppdomänen fil i JSP och jag diskuterar en av dem i denna artikel.

JSP konfigurera anpassade JSP Tags:

  "test" uri = "/WEB-INF/test.tld" %> <% @ Taglib prefix = "test" uri = "/ WEB-INF/test.tld"%>
 <Html>
 <Head>
   JSP Custom Tag Demo </ title > <Title> JSP Custom Tag demo </ title>
 </ Head>
 <Body>
		 TestingTag /> <Test: TestingTag />
 </ Body>
 </ Html> 

JSP Kod Förklaring:
Om du ser jag att hänvisa till taglib som får kallas vid namn "test". Även jag passerar vägen för toppdomänen filen kommer den att hänvisa till.
Slutligen Jag ringer Custom Tag som anges i rad nr: 7

JSP Output:
När vi utförde ovan JSP-koden får vi följande resultat.

  Detta är mitt första tag! 

Custom Search


Populära artiklar:

Tags: Kategorier: Java Taggar:
  1. December 28, 2008 at 12:04 | # 1

    Faktiskt det enklaste sättet att genomföra dem är att använda taggen filer. IWebMvc gör ofta använder taggar, båda skapade av filer och / eller klasser. Ta en titt om intresserade av några "verkliga världen" exempel.

  2. Den
    December 29, 2008 at 00:21 | # 2

    Se även Coldtags svit: http://www.servletsuite.com/jsp.htm
    Det är en största uppsättning anpassade JSP-taggar på nätet.

  3. 17 januari 2009 kl 03:23 | # 3

    Bra tutorial.

  4. Yuva
    6 maj 2009 kl 22:24 | # 4

    Nice tutorial, lätt att förstå. Tack för samma.

  1. Inga trackback ännu.