kroppen < /prefix : TagNavn >
mest grunnleggende egendefinert kode , kalt en enkel kode , har ikke kroppen og krever ikke attributter. En egendefinert kode som inneholder et organ som kalles en body-koden . Egendefinerte koder kan nestes . Attributtverdier kan stilles inn med JSP uttrykk . Det er to grunnleggende komponentene du bygge for å lage en egendefinert kode : Tag Library beskrivelse fil og koden handler Java-klassen . Disse komponentene er registrert med servlet container i programmets web.xml filen .
Opprett Tag Library beskrivelse fil
Tag Library Descriptor ( TLD ) filen er en XML fil som inneholder metadata som definerer dine egendefinerte koder . For eksempel definerer følgende TLD -filen en enkel kode som heter " myTag " med ett attributt , " maxvalue ", og ingen kropp . Den maxvalue attributt er nødvendig, og verdien kan stilles inn med en runtime uttrykk ( satt av rtexprvalue element ), som må returnere et heltall.
< ? Xml version = " 1.0" encoding = "ISO - 8859-1 "> < DOCTYPE taglib PUBLIC ?" - //Sun Microsystems , Inc. //DTD JSP TagLibrary 1.2 //EN " tag kode med en
Opprett Tag Handler
Hver egendefinerte tag har en tag handler som setter og får sine attributter, prosesser i kroppen , og implementerer handlingen . En tag behandleren er en Java- klasse som implementerer javax.servlet.jsp.tagext.Tag eller , enda bedre, strekker en underklasse av Tag. Tag handler klasser har tilgang til de samme implisitte gjenstander som JSP sider, for eksempel forespørsel , respons og økt.
Lag en enkel tag handler klassen ved å utvide javax.servlet.jsp.tagext.TagSupport . Gjennomføre doStartTag , doEndTag , og utgivelsen metoder . Den doStartTag kjøres når starten tag er oppstått, og utfører de viktigste tiltak av koden , kaster slike beregninger og utskrift av resultatene .
Public int doStartTag ( ) JspException { try { ... koden din ...} catch ( Exception ex ) { ... feilhåndtering ...} retur SKIP_BODY ;}
doEndTag metoden utføres når enden tag er oppstått . Tilbake EVAL_PAGE hvis resten av JSP-siden skal evalueres . Utgivelsen metoden bør rydde opp og frigjøre noen ressurser som brukes av tag handler klassen .
P Hvis den tilpassede tag har attributter , inkluderer et medlem variabel og implementere sett og få metoder for hvert attributt . Hvis attributtet ikke er nødvendig, sette en standard verdi. For nødvendig maxvalue attributt : en
private int maxvalue ;
public void setMaxValue ( int val ) { maxvalue = val ; } public int getMaxValue ( ) {return maxvalue ;}
< p > body tag handlers som ikke samhandler med merkelappen kropp innhold extend javax.servlet.jsp.tagext.TagSupport . Implementere de samme metodene som for en enkel kode . Også gjennomføre doAfterBody metode for å analysere og bruke kroppen innholdet . For kroppen tag handlers som trenger å samhandle med merkelappen kropp innhold , utvide javax.servlet.jsp.tagext.BodyTagSupport og både doInitBody og doAfterBody metoder.
Update web.xml
Når du har opprettet den TLD -filen og tag handler klassen , redigere web.xml filen for å registrere nye tag-bibliotek med servlet container . Legg til en taglib delen på slutten før slutten tag
Bruk Custom Tags
I JSP -filen som skal bruke dine egendefinerte koder , bruker taglib direktivet for å indikere tag-bibliotek du skal bruke og prefikset du vil bruke å referere til biblioteket. Du kan enten referere til biblioteket URI bruke banen : en
< % @ taglib URI = " /WEB-INF/exampletaglib.tld " prefix = "f.eks "% >
eller navnet du ga i web.xml som taglib - uri : en
< % @ taglib uri = " mytags " prefix = "f.eks "% >
Bruk egendefinert kode i din JSP der du vil at handlingen skal skje, med prefikset du oppga til taglib direktiv : en