JSP - Aangepaste Tags
Tags JSP werkt als een plugin om uw JSP pagina's. Deze zijn in principe Java klassen die worden uitgevoerd, wanneer JSP-pagina krijgen gemaakt door de server en browser. JSP geleverd met in te bouwen Labels zoals jsp: include, jsp: vooruit, maar ze zijn niet voldoende om tegemoet te komen aan het Web Wereld. Om dit probleem te verhelpen kunt ontwerpen tags die zijn gebaseerd op uw business eis. Dit artikel zal u hoe kunnen we een aangepaste tags voor JSP.
JSP Custom Tags:
Alle JSP Custom Tags implementeert Tag Interface. Om meer te weten informatie over Tag Interface verwijzen naar JSP Custom Tag interface. Maar we niet direct te gebruiken in plaats Tag interface gebruiken we TagSupport en BodyTagSupport, dit is omdat sommige standaard uitvoering van de Tag-interface al is geïmplementeerd in TagSupport en BodyTagSupport dus het wordt makkelijker om te schrijven aangepaste tag-code.
Verschil tussen TagSupport en BodyTagSupport:
In TagSupport definiëren we alle attributen nodig zijn om de gegevens weer te geven, waar net als in BodyTagSupport passeren we attributen en lichaam inhoud aan de JSP Tag. BodyTagSupport wordt niet vaak gebruikt, tenzij u wilt het lichaam inhoud te manipuleren. Passing attributen om de aangepaste tags is niet verplicht.
Voorbeeld van TagSupport:
<TEST :showTime /> Voorbeeld van BodyTagSupport:
<TEST :showTime> Current Time: </ test>
Als je in BodyTagSupport passeren we enkele instantie inhoud aan de XML-tag. Hoewel lichaam inhoud is niet verplicht, maar het zal verslechtering van de prestaties als je lichaam niet gebruikt voor uw aangepaste tag en die u niet gebruikt TagSupport.
Belangrijke functie Oproep in JSP Custom Tag Code:
doStartTag ():
Deze functie krijgen aangeroepen wanneer het JSP-tag krijgen geïnitialiseerd. Deze functie een integer waarde die reeds is gedefinieerd in Tag-interface in de vorm van variabele naam. We normaal rendement SKIP_BODY. SKIP_BODY vertelt de JSP motor om naar het lichaam van de JSP-tag.
doEndTag ():
Deze functie krijgt wel net na doStartTag ()-functie verwerking wordt gedaan. Net als bij () deze functie ook doStartTag retourneert een integer waarde. Normaal we terug EVAL_BODY. EVAL_BODY vertelt de JSP motor om de resterende jsp code proces.
Gewone 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 | ; pakket com.hiteshagrawal; ; import java.io. *; ; import javax.servlet.jsp .*; ; import javax.servlet.jsp.tagext.TagSupport; TagSupport { public class Test breidt TagSupport ( doStartTag ( ) throws JspException { public int doStartTag () gooit JspException ( try ( ( ) ; JspWriter out = pageContext. Sporten (); "This is my first tag!" ) ; uit. print ( "Dit is mijn eerste tag!"); ( IOException ioe ) { ) Catch (IOException ioe) ( ; OIE. printStackTrace (); "IOException while writing data to page" + ioe. getMessage ( ) ) ; throw new JspException ( "IOException tijdens het schrijven van gegevens naar de pagina" + OIE. getMessage ()); ) return SKIP_BODY; ) doEndTag ( ) throws JspException { public int doEndTag () gooit JspException ( return EVAL_PAGE; ) ) |
Code Uitleg:
- Klasse breidt TagSupport geven we niet gebruiken BodyTagSupport klasse.
- doStartTag () Functie schrijft een String inhoud met pageContext.getOut (), dit vormt de output die krijgt geschreven op uw JSP-pagina.
- doStartTag () functie geeft SKIP_BODY. De waarde voor deze variabele is reeds gedefinieerd in Tag Interface.
- doEndTag () functie geeft EVAL_PAGE. De waarde voor deze variabele is reeds gedefinieerd in Tag Interface.
Uitvoering van JSP Tag Java-code in JSP:
Nu onze volgende stap zou zijn om een Tag Library Descriptor (TLD) te maken bestand. Dit bestand vertelt het JSP Engine over de JSP Custom Tag dat zal wennen in de JSP-code.
= "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> <naam> TestingTag </ name> <tagclass> com.hiteshagrawal.Test </ tagclass> <bodycontent> leeg </ bodyContent> </ tag> </ taglib>
Als je ziet heb ik een bepaald TLD-bestand voor de hierboven geschreven JSP-code. Uw Custom JSP Tag moet worden geschreven binnen "tag"-element. Laat me explaing de schriftelijke xml-bestand:
- tlib-versie - Zoals de naam al suggereren het verwijst naar de Tag Library Version
- jsp-versie - verwijst naar het JSP-versie die u gebruikt
- korte-naam - verwijst naar de naam van de JSP Custom Tag dat uw JSP code wordt verwezen naar
- naam - de naam verwijst naar de Custom Tags
- tagclass - Refersn naar de klasse-structuur gebruikt voor uw JSP Tags
- bodyContent - Dit wordt gebruikt in geval wij gebruiken BodyTagSupport, in TagSupport houden we dit lege
Sla dit bestand met de naam TLD test.tld binnen uw WEB-INF-map.
Referentie TLD Bestand in JSP Pagina:
Er zijn meerdere manieren om refererence TLD-bestand in JSP en ik ben de bespreking van een van hen in dit artikel.
Uitvoering van JSP JSP Custom 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 Code Toelichting:
Als je ziet ik ben te verwijzen naar de taglib die krijgt de naam de naam "test". Ook ik ben langs het pad van de TLD-bestand zal worden verwezen naar.
Tot slot roep ik de Custom Tag zoals weergegeven in regel niet: 7
JSP Output:
Wanneer we de bovenstaande uitgevoerd JSP-code krijgen we de volgende uitvoer.
Dit is mijn eerste tag! 
















Eigenlijk is de makkelijkste manier om ze uit te voeren is met behulp tag-bestanden. IWebMvc maakt zwaar gebruik van tags, beide gemaakt van bestanden en / of klassen. Neem een kijkje indien geïnteresseerd in een aantal "echte wereld" voorbeelden.
Zie ook Coldtags suite: http://www.servletsuite.com/jsp.htm
Het is een grootste verzameling aangepaste JSP tags over het Net.
Goede tutorial.
Nice tutorial, makkelijk te begrijpen. Bedankt voor hetzelfde.