Creating Custom JSP Tag Libraries - PowerPoint PPT Presentation

1 / 27
About This Presentation
Title:

Creating Custom JSP Tag Libraries

Description:

JSP Tag Libraries http://java.sun.com/products/jsp/taglibraries.html#tutorials Taken from Core Servlets and JavaServer Pages from Prentice Hall and Sun Microsystems ... – PowerPoint PPT presentation

Number of Views:110
Avg rating:3.0/5.0
Slides: 28
Provided by: Pete3299
Category:

less

Transcript and Presenter's Notes

Title: Creating Custom JSP Tag Libraries


1
Creating Custom JSP Tag Libraries
  • http//java.sun.com/products/jsp/taglibraries.html
    tutorials
  • Taken from Core Servlets and JavaServer Pages
  • from Prentice Hall and Sun Microsystems Press,
  • http//www.coreservlets.com/.
  • copy 2000 Marty Hall
  • may be freely used or adapted.

2
JSP Komponenten
Anwendungs Logik
Java Entwickler
Daten Präsentation
DB
Daten Zugriff
WEB Designer
3
Beans
  • ltjspuseBean id"wobs" class"jspcr.beans.weather.
    Observation"gt
  • ltjspsetProperty
  • name"wobs"
  • property"airportCode"
  • value"lt airportCode gt"/gt
  • lt/jspuseBeangt

4
Custom Tags
Aktion starten
  • ltjaxexample /gt Simple Tag
  • ltjaxdebuggt Body Tag
  • .
  • lt/jaxdebuggt
  • Kompaktere Syntax
  • Inhalte bearbeiten
  • Arbeitsaufwendiger

Aktion starten
Inhalt bearbeiten
Aktion starten
5
Installieren und starten
  • Customtags benötigen folgende Elemente
  • csajsp-taglib.tld Taglib Definition
  • SimpleExample.jsp JSP
  • ExampleTag.java Java Klasse
  • Pfad

6
Custom Tags
  • Ein Tag ist eine Klasse, die
  • javax.servlet.jsp.tagext.Tag Interface
    implementiert.

7
Hello World Kochrezept
  • 1. File HelloWorldTag.java im ../tag Ordner
    erstellen
  • 2. import Anweisungen
  • package com.jax.tag
  • import javax.servlet.jsp.import
    javax.servlet.jsp.tagext.
  • 3. Implementierung javax.servlet.jsp.tagext.Tag
    Interface
  • public class HelloWorldTag implements Tag
  • 4. Container Variablen
  • private PageContext pageContextprivate Tag
    parent
  • 5. Constructor
  • public HelloWorldTag()
  • super()

8
Hello World Kochrezept
  • 6. Diese Methode wird beim Start-Tag ausgeführt
  • public int doStartTag() throws javax.servlet.jsp.J
    spTagException
  • return SKIP_BODY
  • 7. Diese Methode wird beim End-Tag ausgeführt
  • public int doEndTag() throws javax.servlet.jsp.Jsp
    TagException
  • try
  • pageContext.getOut().write("Hello World!")
  • catch(java.io.IOException e)
  • throw new JspTagException("IO Error "
    e.getMessage())
  • return EVAL_PAGE // Den Rest der Seite
    weiterverarbeiten.

9
Hello World Kochrezept
  • 8. Es braucht noch weitere Methoden
  • public void release()
  • 9.
  • public void setPageContext(final
    javax.servlet.jsp.PageContext pageContext)
    this.pageContextpageContext
  • 10.
  • public void setParent(final javax.servlet.jsp.tage
    xt.Tag parent) this.parentparent
  • 11. Finally, this method has to be implemented
  • public javax.servlet.jsp.tagext.Tag getParent()
  • return parent

10
Einfacher (extend TagSupport)
  • package customtag.tags
  • import javax.servlet.jsp.
  • import javax.servlet.jsp.tagext.
  • import java.io.
  • public class ExampleTag extends TagSupport
  • public int doStartTag()
  • try
  • JspWriter out pageContext.getOut()
  • out.print("Hello World"
  • "(Hello World)")
  • catch(IOException ioe)
  • System.out.println("Error in ExampleTag "
    ioe)
  • return(SKIP_BODY)

11
pageContext Methoden
  • getOut
  • getRequest
  • getResponse
  • getServletContext
  • getSession
  • JspWriter out pageContext.getOut()

12
SimpleExample.jsp
  • ltHTMLgtltHEADgt
  • lt_at_ taglib uri"csajsp-taglib.tld" prefix"jax"
    gt
  • ltTITLEgtltjaxexample /gtlt/TITLEgtlt/HEADgt
  • ltBODYgt
  • ltH1gtltjaxexample /gtlt/H1gt
  • ltjaxexample /gt
  • lt/BODYgt
  • lt/HTMLgt

13
taglib.tld (ins gleiche Verzeichnis wie die JSPs)
  • lt?xml version"1.0" encoding"ISO-8859-1" ?gt
  • lt!DOCTYPE taglib
  • PUBLIC "-//Sun Microsystems, Inc.//DTD
    JSP Tag Library 1.1//EN"
  • "http//java.sun.com/j2ee/dtds/web-jsptaglibrary_
    1_1.dtd"gt
  • lttaglibgt
  • lttlibversiongt1.0lt/tlibversiongt
  • ltjspversiongt1.1lt/jspversiongt
  • ltshortnamegtcsajsplt/shortnamegt
  • lturigtlt/urigt
  • ltinfogt
  • Beispiel Tags für die Vorlesung JAX,
  • http//www.ifi.unibas.ch
  • lt/infogt
  • lttaggt
  • ltnamegtexamplelt/namegt
  • lttagclassgtcustomtag.tags.ExampleTaglt/tagclassgt
  • ltinfogtSimplest example inserts one line of
    outputlt/infogt
  • ltbodycontentgtemptylt/bodycontentgt // JSP
    Inhalt wird als JSP interpretiert

14
SimplePrimeTag.java
  • package customtag.tags
  • import javax.servlet.jsp.
  • import javax.servlet.jsp.tagext.
  • import java.io.
  • import java.math.
  • import customtag.Primes
  • public class SimplePrimeTag extends TagSupport
  • protected int len 50
  • public int doStartTag()
  • try
  • JspWriter out pageContext.getOut()
  • BigInteger prime Primes.nextPrime(Primes.r
    andom(len))
  • out.print(prime)
  • catch(IOException ioe)
  • System.out.println("Error generating prime
    " ioe)

15
PrimeTag.java
  • package customtag.tags
  • import javax.servlet.jsp.
  • import javax.servlet.jsp.tagext.
  • import java.io.
  • import java.math.
  • import customtag.tags.
  • public class PrimeTag extends SimplePrimeTag
  • public void setLength(String length)
  • try
  • len Integer.parseInt(length)
  • catch(NumberFormatException nfe)
  • len 50

16
taglib
  • lttaggt
  • ltnamegtsimplePrimelt/namegt
  • lttagclassgtcustomtag.tags.SimplePrimeTaglt/tagcl
    assgt
  • ltinfogtOutputs a random 50-digit prime.lt/infogt
  • ltbodycontentgtemptylt/bodycontentgt
  • lt/taggt
  • lttaggt
  • ltnamegtprimelt/namegt
  • lttagclassgtcustomtag.tags.PrimeTaglt/tagclassgt
  • ltinfogtOutputs a random N-digit prime.lt/infogt
  • ltbodycontentgtemptylt/bodycontentgt
  • ltattributegt
  • ltnamegtlengthlt/namegt
  • ltrequiredgtfalselt/requiredgt
  • lt/attributegt
  • lt/taggt

17
HeadingTag.jsp I
  • package customtag.tags
  • import javax.servlet.jsp.
  • import javax.servlet.jsp.tagext.
  • import java.io.
  • public class HeadingTag extends TagSupport
  • private String bgColor // The one required
    attribute
  • private String color null
  • private String align"CENTER"
  • private String fontSize"36"
  • private String fontList"Arial, Helvetica,
    sans-serif"
  • private String border"0"
  • private String widthnull
  • public void setBgColor(String bgColor)
  • this.bgColor bgColor

18
HeadingTag.jsp II
  • public int doStartTag()
  • try
  • JspWriter out pageContext.getOut()
  • out.print("ltTABLE BORDER" border
  • " BGCOLOR\"" bgColor "\""
  • " ALIGN\"" align "\"")
  • if (width ! null)
  • out.print(" WIDTH\"" width "\"")
  • out.print("gtltTRgtltTHgt")
  • out.print("ltSPAN STYLE\""
  • "font-size " fontSize "px "
  • "font-family " fontList "
    ")
  • if (color ! null)
  • out.println("color " color "")
  • out.print("\"gt ") // End of ltSPAN ...gt
  • catch(IOException ioe)
  • System.out.println("Error in HeadingTag "
    ioe)

19
HeadingTag.jsp III
  • public int doEndTag()
  • try
  • JspWriter out pageContext.getOut()
  • out.print("lt/SPANgtlt/TABLEgt")
  • catch(IOException ioe)
  • System.out.println("Error in HeadingTag "
    ioe)
  • return(EVAL_PAGE) // Continue with rest of
    JSP page

20
HeadingExample.jsp
  • ltHTMLgtltHEADgtltTITLEgtSome Tag-Generated
    Headingslt/TITLEgtlt/HEADgt
  • ltBODYgtlt_at_ taglib uri"csajsp-taglib.tld"
    prefix"jax" gt
  • ltjaxheading bgColor"C0C0C0"gt
  • Default Heading
  • lt/jaxheadinggt
  • ltPgt
  • ltjaxheading bgColor"BLACK" color"WHITE"gt
  • White on Black Heading
  • lt/jaxheadinggt
  • ltPgt
  • ltjaxheading bgColor"EF8429" fontSize"60"
    border"5"gt
  • Large Bordered Heading
  • lt/jaxheadinggt
  • ltPgt
  • ltjaxheading bgColor"CYAN" width"100"gt
  • Heading with Full-Width Background
  • lt/jaxheadinggt
  • ltPgt
  • ltjaxheading bgColor"CYAN" fontSize"60"

21
Debug.jsp
  • ltHTMLgtltHEADgtltTITLEgtUsing the Debug
    Taglt/TITLEgtlt/HEADgt
  • ltBODYgt
  • ltH1gtUsing the Debug Taglt/H1gt
  • lt_at_ taglib uri"csajsp-taglib.tld" prefix"jax"
    gt
  • Top of regular page. Blah, blah, blah. Yadda,
    yadda, yadda.
  • ltPgt
  • ltjaxdebuggt
  • ltBgtDebuglt/Bgt
  • ltULgt
  • ltLIgtCurrent time lt new java.util.Date() gt
  • ltLIgtRequesting hostname lt request.getRemoteHo
    st() gt
  • ltLIgtSession ID lt session.getId() gt
  • lt/ULgt
  • lt/jaxdebuggt

22
DebugTag.java
  • package customtag.tags
  • import javax.servlet.jsp.
  • import javax.servlet.jsp.tagext.
  • import java.io.
  • import javax.servlet.
  • public class DebugTag extends TagSupport
  • public int doStartTag()
  • ServletRequest request pageContext.getReques
    t()
  • String debugFlag request.getParameter("debug
    ")
  • if ((debugFlag ! null)
  • (!debugFlag.equalsIgnoreCase("false")))
  • return(EVAL_BODY_INCLUDE)
  • else
  • return(SKIP_BODY)

23
FilterTag.java
  • package customtag.tags
  • import javax.servlet.jsp.
  • import javax.servlet.jsp.tagext.
  • import java.io.
  • import customtag.
  • public class FilterTag extends BodyTagSupport
  • public int doAfterBody()
  • BodyContent body getBodyContent()
  • String filteredBody ServletUtilities.filter(
    body.getString())
  • try
  • JspWriter out body.getEnclosingWriter()
  • out.print(filteredBody)
  • catch(IOException ioe)
  • System.out.println("Error in FilterTag "
    ioe)
  • return(SKIP_BODY)

24
FilterExample.jsp
  • ltHTMLgtltHEADgtltTITLEgtHTML Logical Character
    Styleslt/TITLEgt
  • ltBODYgt
  • ltH1gtHTML Logical Character Styleslt/H1gt
  • Physical character styles (B, I, etc.) are
    rendered consistently
  • in different browsers. Logical character styles,
    however,
  • may be rendered differently by different
    browsers.
  • Here's how your browser
  • (lt request.getHeader("User-Agent") gt)
  • renders the HTML 4.0 logical character styles
  • ltPgt
  • lt_at_ taglib uri"csajsp-taglib.tld" prefix"jax"
    gt
  • ltTABLE BORDER1 ALIGN"CENTER"gt
  • ltTR CLASS"COLORED"gtltTHgtExampleltTHgtResult
  • ltTRgt

25
FilterExample.jsp
  • ltTDgtltPREgtltjaxfiltergt
  • ltEMgtSome emphasized text.lt/EMgtltBRgt
  • ltSTRONGgtSome strongly emphasized
    text.lt/STRONGgtltBRgt
  • ltCODEgtSome code.lt/CODEgtltBRgt
  • ltSAMPgtSome sample text.lt/SAMPgtltBRgt
  • ltKBDgtSome keyboard text.lt/KBDgtltBRgt
  • ltDFNgtA term being defined.lt/DFNgtltBRgt
  • ltVARgtA variable.lt/VARgtltBRgt
  • ltCITEgtA citation or reference.lt/CITEgt
  • lt/jaxfiltergtlt/PREgt
  • ltTDgtltEMgtSome emphasized text.lt/EMgtltBRgt
  • ltSTRONGgtSome strongly emphasized
    text.lt/STRONGgtltBRgt
  • ltCODEgtSome code.lt/CODEgtltBRgt
  • ltSAMPgtSome sample text.lt/SAMPgtltBRgt
  • ltKBDgtSome keyboard text.lt/KBDgtltBRgt
  • ltDFNgtA term being defined.lt/DFNgtltBRgt
  • ltVARgtA variable.lt/VARgtltBRgt
  • ltCITEgtA citation or reference.lt/CITEgt

26
Taglibs
27
Praktikum
  • Frohe Festtage
  • Bean Übung beenden
  • Beispiele Customtags durchspielen
  • 3. Eine Taglib von Apache austesten
  • http//jakarta.apache.org/taglibs/index.html
Write a Comment
User Comments (0)
About PowerShow.com