krop
p mest basale tilpasset tag , kaldet en simpel tag, har ingen krop og ikke kræver attributter . En brugerdefineret tag indeholder et legeme kaldes en body-tagget . Tilpassede tags kan indlejres . Attributværdier kan indstilles ved hjælp JSP udtryk. Der er to grundlæggende komponenter, du bygge til at oprette en tilpasset tag : det Tag Library Descriptor filen og tag handleren Java-klasse . Disse komponenter er registreret hos servlet container i din ansøgning web.xml fil.
Opret Tag Library Descriptor File
Tag Library Descriptor (TLD) fil er en XML-fil , der indeholder metadata definere dine brugerdefinerede tags. For eksempel definerer følgende TLD fil et simpelt tag navnet " myTag " med én attribut , " maxValue ", og ingen krop . Den maxValue attribut er påkrævet, og værdien kan indstilles ved hjælp af en runtime udtryk ( fastsat af rtexprvalue element ), der skal returnere et heltal.
Xml udgave = " 1.0" encoding = "ISO - 8859-1 "> < DOCTYPE taglib PUBLIC ? ! " - //Sun Microsystems, Inc. //DTD JSP TagLibrary 1.2 //EN " tag tag med en
Opret Tag Handler
Hver tilpasset tag har en tag handleren , der sætter og får sine attributter , processer i kroppen , og implementerer handlingen. Et tag handleren er en Java-klasse , der implementerer javax.servlet.jsp.tagext.Tag eller, endnu bedre , udvider en underklasse af Tag. Tag HF klasser har adgang til de samme implicitte objekter som JSP sider , såsom anmodning , respons , og session .
Oprette et simpelt tag handleren klasse ved at udvide javax.servlet.jsp.tagext.TagSupport . Gennemføre doStartTag , doEndTag og frigivelse metoder. Den doStartTag der udføres, når starten tag er stødt på, og udfører i hovedsagen af tag , sådan udfører beregninger og udskrivning af resultaterne.
Offentlig int doStartTag () kaster JspException { try { ... din kode ... } catch ( Exception ex ) { ... fejlhåndtering ... } tilbagevenden SKIP_BODY ;}
doEndTag Metoden udføres når enden tag er stødt . Retur EVAL_PAGE hvis resten af JSP-siden skal evalueres . Frigivelsen metode skal rydde op og frigive ressourcer, som tag handleren klassen.
P Hvis din brugerdefinerede tag har attributter , omfatter et medlem variabel og implementere sæt og få metoder for hver egenskab . Hvis attributten ikke er nødvendigt , skal du indstille en standardværdi . For den påkrævede maxValue attribut : Hej
private int maxValue ,
public void setMaxValue ( int val ) { maxValue = val; } public int getMaxValue () {return maxValue ;}
< p > krop tag handlers , der ikke vekselvirker med tagget krop indhold extend javax.servlet.jsp.tagext.TagSupport . Gennemføre de samme metoder som for et simpelt tag . Også gennemføre doAfterBody metode til at analysere og bruge kroppen indhold. For kroppen tag handlere , der har brug for at interagere med tagget krop indhold , udvide javax.servlet.jsp.tagext.BodyTagSupport og både doInitBody og doAfterBody metoder.
Opdatering web.xml
< br >
Når du har oprettet TLD filen og tag handleren klasse, redigere filen web.xml at registrere dit nye tag bibliotek med servlet container . Tilføj et taglib sektion for enden inden udgangen tag
Brug dine brugerdefinerede tags
I JSP -fil, der vil bruge din brugerdefinerede tags , skal du bruge TagLib direktivet at angive tag bibliotek , du vil bruge , og præfikset , du vil bruge at henvise til dit bibliotek. Du kan enten henvise til dit bibliotek uri bruge stien : Hej
< % @ taglib uri = "/WEB-INF/exampletaglib.tld " prefix = " fx" % >
eller det navn, du har angivet i web.xml som taglib - uri : Hej
< % @ taglib uri = " mytags " prefix = " fx" % >
Brug din brugerdefinerede tag i din JSP , hvor du vil handlingen til at ske , ved hjælp af præfikset du har opgivet til taglib direktivet : Hej