SlideShare a Scribd company logo
JSP Custom Tags Svetlin Nakov National Academy for Software Development academy.devbg.org Creating and Using Custom Tags
Contents Tag Files Types of Tag Files JSTL in Tags Exporting Variables from Tags Modifying Body Content in Tags
Tag Files Tag files let you define your own custom JSP tags You should use tag files when: You want to modularize a part of a JSP’s output You want to perform some behavior in many places (reusable) This behavior can be presentation or application logic <books4u:shoppingCart currency=&quot;EUR&quot; />
Types of Tag Files Tag files come in two types: Stand-alone tags Tags containing other tags and text Both types of tags can have any number of attributes <abc:xyz /> <abc:yyz>This is some text</abc:yyz>
Stand-Alone Tags Stand-alone tags are used when you want to insert output in a specific position in the JSP For example: Inserts a formatted number: Displays the shopping cart: <fmt:formatNumber … /> <books4u:ShoppingCart … />
Containing Tags Containing tags can be used for: Filtering: Iteration: Conditional execution: <xlate:translate>Translate this</xlate:translate> <filter:filterContent rating=&quot;VIP&quot;> … </filter:filterContent> <c:forEach> and <x:forEach> <db:executeQuery sql=&quot;select…&quot;>…</db:executeQuery> <c:if>, <c:choose>, <c:when> <security:auth role=&quot;admin&quot;> … </security:auth>
A Simple Tag Example Let’s create a simple tag file (the standard hello world example): Put this code in the file  hello.tag  in  /WEB-INF/tags Using the tag: <%@ tag body-content=&quot;empty&quot; %> <h1>Hello, world!</h1> <%@ taglib prefix=&quot;my&quot; tagdir=&quot;/WEB-INF/tags&quot; %> <my:hello />
Hello Tag Live Demo
Attributes in Tags <%@ tag body-content=&quot;empty&quot; %> <%@ attribute name=&quot;min&quot; required=&quot;false&quot; %>  <%@ attribute name=&quot;max&quot; required=&quot;false&quot; %>  <% double dMin = 0.0; if (min != null) { dMin = Double.parseDouble(min); } double dMax = 1.0; if (max != null) { dMax = Double.parseDouble(max); } double number =  (Math.random()*(dMax-dMin)) + dMin; %> <%= number %>
Random Tag Live Demo
JSTL in Tags <%@ tag body-content=&quot;empty&quot; %> <%@ attribute name=&quot;firstName&quot; required=&quot;false&quot; %>  <%@ taglib prefix=&quot;c“ uri=&quot;http://java.sun.com/jsp/jstl/core&quot; %> <c:if test='${empty firstName}'> <h1>Hello,  guest !</h1> </c:if> <c:if test='${not empty firstName}'> <h1>Hello, <c:out value='${firstName}' />!</h1> </c:if>
Body Content in Tags The following tag uses the body content while iterating: Scriptless means that <% … %> are not allowed <%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot; %> <%@ attribute name=&quot;count&quot; required=&quot;true&quot; %> <c:forEach begin=&quot;1&quot; end=&quot;${count}&quot;> <jsp:doBody /> </c:forEach>
A Test JSP <%-- Include all tags from /WEB-INF/tags --%> <%@ taglib prefix=&quot;my&quot; tagdir=&quot;/WEB-INF/tags&quot; %> <html> <body> <%-- Use the tag &quot;repeat.tag&quot; --%> <my:repeat count=&quot;10&quot;> <div>Hello!</div> </my:repeat> </body> </html>
Repeat Tag Live Demo
Exporting Variables from Tags The same tag can be modified to export a current index variable: <%@ tag body-content=&quot;scriptless&quot; %> <%@ attribute name=&quot;numTimes&quot; required=&quot;true&quot; %> <%@ attribute name=&quot;var&quot; rtexprvalue=&quot;false&quot; required=&quot;true&quot; %> <%@ variable name-from-attribute=&quot;var&quot; alias=&quot;i&quot; scope=&quot;NESTED&quot; %> <%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jstl/core&quot; %> <c:forEach begin='1' end='${numTimes}' var='i'> <jsp:doBody /> </c:forEach>
A Test JSP <%@ taglib prefix=&quot;tag_examples&quot; tagdir=&quot;/WEB-INF/tags&quot; %> <%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jstl/core&quot; %> <html> <body> <tag_examples:repeat_var var='index' numTimes= '5' > <div>Hello #<c:out value='${index}' />!</div> </tag_examples:repeat_var> </body> </html>
Modifying Body Content in Tags We can store (and manipulate) the body content, instead of outputting it directly: <%@ tag body-content=&quot;scriptless&quot; %> <%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jstl/core&quot; %> <jsp:doBody var='body' /> <c:forTokens var='token' items='${body}' delims=' '> <div><c:out value='${token}' /></div> </c:forTokens>
A Test JSP <%@ taglib prefix=&quot;tag_examples&quot; tagdir=&quot;/WEB-INF/tags&quot; %> <%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jstl/core&quot; %> <html> <body> <p> The quick brown fox jumped over the lazy dog. </p> <p> <tag_examples:tokenize> The quick brown fox jumped over the lazy dog. </tag_examples:tokenize> </p> </body> </html>
JSP Custom Tags Questions?
Problems Create a JSP/custom tags based web site with master pages and menu navigation that allows: Adding numbers Printing all numbers in range 1..100 Both operations should be available from different JSP pages that reuse the master page layout.
Problems (2) Create a JSP/custom tag for displaying a given collection of Books in a table. Every book is an object from a Book class with the following properties: ISBN Book title Author name Simple output:

More Related Content

What's hot (20)

PPSX
DIWE - Coding HTML for Basic Web Designing
Rasan Samarasinghe
 
PPT
Java script
Fajar Baskoro
 
PDF
Introduction to Sightly
Ankit Gubrani
 
PPT
AJAX Workshop Notes
Pamela Fox
 
PPT
php 1
tumetr1
 
PPT
Xhtml 2010
guest0f1e7f
 
PPT
KMUTNB - Internet Programming 4/7
phuphax
 
PPTX
Java script
Jay Patel
 
PPTX
Javascript
Priyanka Pradhan
 
PPT
html
tumetr1
 
PPT
Agile Development With Hobo
Evarist Lobo
 
PPTX
Introduction to HAML
Jon Dean
 
PPTX
Html5 attributes
AbhishekMondal42
 
PPT
Java script
Soham Sengupta
 
PPT
JavaScript Workshop
Pamela Fox
 
PPT
OSS BarCamp Mumbai - JSON Presentation and Demo
Ketan Khairnar
 
PPTX
Session 3 Java Script
Muhammad Hesham
 
PPT
JavaScript: Ajax & DOM Manipulation
borkweb
 
PPTX
CSC103 Web Technologies: HTML, CSS, JS
Richard Homa
 
PPTX
Learning jsp
mustafacse2009
 
DIWE - Coding HTML for Basic Web Designing
Rasan Samarasinghe
 
Java script
Fajar Baskoro
 
Introduction to Sightly
Ankit Gubrani
 
AJAX Workshop Notes
Pamela Fox
 
php 1
tumetr1
 
Xhtml 2010
guest0f1e7f
 
KMUTNB - Internet Programming 4/7
phuphax
 
Java script
Jay Patel
 
Javascript
Priyanka Pradhan
 
html
tumetr1
 
Agile Development With Hobo
Evarist Lobo
 
Introduction to HAML
Jon Dean
 
Html5 attributes
AbhishekMondal42
 
Java script
Soham Sengupta
 
JavaScript Workshop
Pamela Fox
 
OSS BarCamp Mumbai - JSON Presentation and Demo
Ketan Khairnar
 
Session 3 Java Script
Muhammad Hesham
 
JavaScript: Ajax & DOM Manipulation
borkweb
 
CSC103 Web Technologies: HTML, CSS, JS
Richard Homa
 
Learning jsp
mustafacse2009
 

Viewers also liked (20)

PPT
Introduction to html
vikasgaur31
 
PDF
JSP : Creating Custom Tag
AshishSingh Bhatia
 
PDF
Jazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
Simon Willison
 
PPTX
State management
teach4uin
 
PPT
WCF
Vishwa Mohan
 
PPTX
ASP.NET Lecture 3
Julie Iskander
 
PPTX
Windows Presentation Foundation
Deepika Chaudhary
 
PPTX
Master page in ASP . NET
baabtra.com - No. 1 supplier of quality freshers
 
PPTX
WEB PAGE DESIGN USING HTML
Sneha Mukherjee
 
PDF
Web technology practical list
desaipratu10
 
PPTX
State management
Iblesoft
 
PPT
Rich faces
BG Java EE Course
 
PPTX
Master pages ppt
Iblesoft
 
PPTX
ASP.NET State management
Shivanand Arur
 
PPT
Master pages
teach4uin
 
PPT
State management in ASP.NET
Om Vikram Thapa
 
PPT
Java Server Faces (JSF) - advanced
BG Java EE Course
 
DOC
WCF tutorial
Abhi Arya
 
PPT
JSP Standart Tag Lİbrary - JSTL
seleciii44
 
PDF
JSP Standard Tag Library
Ilio Catallo
 
Introduction to html
vikasgaur31
 
JSP : Creating Custom Tag
AshishSingh Bhatia
 
Jazz up your JavaScript: Unobtrusive scripting with JavaScript libraries
Simon Willison
 
State management
teach4uin
 
ASP.NET Lecture 3
Julie Iskander
 
Windows Presentation Foundation
Deepika Chaudhary
 
WEB PAGE DESIGN USING HTML
Sneha Mukherjee
 
Web technology practical list
desaipratu10
 
State management
Iblesoft
 
Rich faces
BG Java EE Course
 
Master pages ppt
Iblesoft
 
ASP.NET State management
Shivanand Arur
 
Master pages
teach4uin
 
State management in ASP.NET
Om Vikram Thapa
 
Java Server Faces (JSF) - advanced
BG Java EE Course
 
WCF tutorial
Abhi Arya
 
JSP Standart Tag Lİbrary - JSTL
seleciii44
 
JSP Standard Tag Library
Ilio Catallo
 
Ad

More from BG Java EE Course (20)

PPT
Java Server Faces (JSF) - Basics
BG Java EE Course
 
PPT
Unified Expression Language
BG Java EE Course
 
PPT
Java Server Pages
BG Java EE Course
 
PPT
Web Applications and Deployment
BG Java EE Course
 
PPT
Java Servlets
BG Java EE Course
 
PPTX
HTML: Tables and Forms
BG Java EE Course
 
PPTX
HTML Fundamentals
BG Java EE Course
 
PPTX
WWW and HTTP
BG Java EE Course
 
PPT
Processing XML with Java
BG Java EE Course
 
PPT
Introduction to XML
BG Java EE Course
 
PPT
Data Access with JDBC
BG Java EE Course
 
PPT
Introduction to-sql
BG Java EE Course
 
PPT
Introduction to-RDBMS-systems
BG Java EE Course
 
PPT
Basic data-structures-v.1.1
BG Java EE Course
 
PPT
Basic input-output-v.1.1
BG Java EE Course
 
PPT
Strings v.1.1
BG Java EE Course
 
PPT
Object-oriented concepts
BG Java EE Course
 
PPT
Inheritance and Polymorphism
BG Java EE Course
 
Java Server Faces (JSF) - Basics
BG Java EE Course
 
Unified Expression Language
BG Java EE Course
 
Java Server Pages
BG Java EE Course
 
Web Applications and Deployment
BG Java EE Course
 
Java Servlets
BG Java EE Course
 
HTML: Tables and Forms
BG Java EE Course
 
HTML Fundamentals
BG Java EE Course
 
WWW and HTTP
BG Java EE Course
 
Processing XML with Java
BG Java EE Course
 
Introduction to XML
BG Java EE Course
 
Data Access with JDBC
BG Java EE Course
 
Introduction to-sql
BG Java EE Course
 
Introduction to-RDBMS-systems
BG Java EE Course
 
Basic data-structures-v.1.1
BG Java EE Course
 
Basic input-output-v.1.1
BG Java EE Course
 
Strings v.1.1
BG Java EE Course
 
Object-oriented concepts
BG Java EE Course
 
Inheritance and Polymorphism
BG Java EE Course
 
Ad

Recently uploaded (20)

PDF
Blockchain Transactions Explained For Everyone
CIFDAQ
 
PPTX
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
PDF
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
PDF
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
PPT
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
PDF
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
PPTX
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
PDF
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
PDF
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
PDF
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
PDF
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
PPTX
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PDF
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
PDF
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
PDF
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
PDF
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 
Blockchain Transactions Explained For Everyone
CIFDAQ
 
UiPath Academic Alliance Educator Panels: Session 2 - Business Analyst Content
DianaGray10
 
Newgen Beyond Frankenstein_Build vs Buy_Digital_version.pdf
darshakparmar
 
Bitcoin for Millennials podcast with Bram, Power Laws of Bitcoin
Stephen Perrenod
 
Interview paper part 3, It is based on Interview Prep
SoumyadeepGhosh39
 
SFWelly Summer 25 Release Highlights July 2025
Anna Loughnan Colquhoun
 
"Autonomy of LLM Agents: Current State and Future Prospects", Oles` Petriv
Fwdays
 
CIFDAQ Market Insights for July 7th 2025
CIFDAQ
 
Log-Based Anomaly Detection: Enhancing System Reliability with Machine Learning
Mohammed BEKKOUCHE
 
LLMs.txt: Easily Control How AI Crawls Your Site
Keploy
 
[Newgen] NewgenONE Marvin Brochure 1.pdf
darshakparmar
 
Q2 FY26 Tableau User Group Leader Quarterly Call
lward7
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Exolore The Essential AI Tools in 2025.pdf
Srinivasan M
 
New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
Smart Trailers 2025 Update with History and Overview
Paul Menig
 
Transcript: New from BookNet Canada for 2025: BNC BiblioShare - Tech Forum 2025
BookNet Canada
 
HCIP-Data Center Facility Deployment V2.0 Training Material (Without Remarks ...
mcastillo49
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Reverse Engineering of Security Products: Developing an Advanced Microsoft De...
nwbxhhcyjv
 

JSP Custom Tags

  • 1. JSP Custom Tags Svetlin Nakov National Academy for Software Development academy.devbg.org Creating and Using Custom Tags
  • 2. Contents Tag Files Types of Tag Files JSTL in Tags Exporting Variables from Tags Modifying Body Content in Tags
  • 3. Tag Files Tag files let you define your own custom JSP tags You should use tag files when: You want to modularize a part of a JSP’s output You want to perform some behavior in many places (reusable) This behavior can be presentation or application logic <books4u:shoppingCart currency=&quot;EUR&quot; />
  • 4. Types of Tag Files Tag files come in two types: Stand-alone tags Tags containing other tags and text Both types of tags can have any number of attributes <abc:xyz /> <abc:yyz>This is some text</abc:yyz>
  • 5. Stand-Alone Tags Stand-alone tags are used when you want to insert output in a specific position in the JSP For example: Inserts a formatted number: Displays the shopping cart: <fmt:formatNumber … /> <books4u:ShoppingCart … />
  • 6. Containing Tags Containing tags can be used for: Filtering: Iteration: Conditional execution: <xlate:translate>Translate this</xlate:translate> <filter:filterContent rating=&quot;VIP&quot;> … </filter:filterContent> <c:forEach> and <x:forEach> <db:executeQuery sql=&quot;select…&quot;>…</db:executeQuery> <c:if>, <c:choose>, <c:when> <security:auth role=&quot;admin&quot;> … </security:auth>
  • 7. A Simple Tag Example Let’s create a simple tag file (the standard hello world example): Put this code in the file hello.tag in /WEB-INF/tags Using the tag: <%@ tag body-content=&quot;empty&quot; %> <h1>Hello, world!</h1> <%@ taglib prefix=&quot;my&quot; tagdir=&quot;/WEB-INF/tags&quot; %> <my:hello />
  • 9. Attributes in Tags <%@ tag body-content=&quot;empty&quot; %> <%@ attribute name=&quot;min&quot; required=&quot;false&quot; %> <%@ attribute name=&quot;max&quot; required=&quot;false&quot; %> <% double dMin = 0.0; if (min != null) { dMin = Double.parseDouble(min); } double dMax = 1.0; if (max != null) { dMax = Double.parseDouble(max); } double number = (Math.random()*(dMax-dMin)) + dMin; %> <%= number %>
  • 11. JSTL in Tags <%@ tag body-content=&quot;empty&quot; %> <%@ attribute name=&quot;firstName&quot; required=&quot;false&quot; %> <%@ taglib prefix=&quot;c“ uri=&quot;http://java.sun.com/jsp/jstl/core&quot; %> <c:if test='${empty firstName}'> <h1>Hello, guest !</h1> </c:if> <c:if test='${not empty firstName}'> <h1>Hello, <c:out value='${firstName}' />!</h1> </c:if>
  • 12. Body Content in Tags The following tag uses the body content while iterating: Scriptless means that <% … %> are not allowed <%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jsp/jstl/core&quot; %> <%@ attribute name=&quot;count&quot; required=&quot;true&quot; %> <c:forEach begin=&quot;1&quot; end=&quot;${count}&quot;> <jsp:doBody /> </c:forEach>
  • 13. A Test JSP <%-- Include all tags from /WEB-INF/tags --%> <%@ taglib prefix=&quot;my&quot; tagdir=&quot;/WEB-INF/tags&quot; %> <html> <body> <%-- Use the tag &quot;repeat.tag&quot; --%> <my:repeat count=&quot;10&quot;> <div>Hello!</div> </my:repeat> </body> </html>
  • 15. Exporting Variables from Tags The same tag can be modified to export a current index variable: <%@ tag body-content=&quot;scriptless&quot; %> <%@ attribute name=&quot;numTimes&quot; required=&quot;true&quot; %> <%@ attribute name=&quot;var&quot; rtexprvalue=&quot;false&quot; required=&quot;true&quot; %> <%@ variable name-from-attribute=&quot;var&quot; alias=&quot;i&quot; scope=&quot;NESTED&quot; %> <%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jstl/core&quot; %> <c:forEach begin='1' end='${numTimes}' var='i'> <jsp:doBody /> </c:forEach>
  • 16. A Test JSP <%@ taglib prefix=&quot;tag_examples&quot; tagdir=&quot;/WEB-INF/tags&quot; %> <%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jstl/core&quot; %> <html> <body> <tag_examples:repeat_var var='index' numTimes= '5' > <div>Hello #<c:out value='${index}' />!</div> </tag_examples:repeat_var> </body> </html>
  • 17. Modifying Body Content in Tags We can store (and manipulate) the body content, instead of outputting it directly: <%@ tag body-content=&quot;scriptless&quot; %> <%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jstl/core&quot; %> <jsp:doBody var='body' /> <c:forTokens var='token' items='${body}' delims=' '> <div><c:out value='${token}' /></div> </c:forTokens>
  • 18. A Test JSP <%@ taglib prefix=&quot;tag_examples&quot; tagdir=&quot;/WEB-INF/tags&quot; %> <%@ taglib prefix=&quot;c&quot; uri=&quot;http://java.sun.com/jstl/core&quot; %> <html> <body> <p> The quick brown fox jumped over the lazy dog. </p> <p> <tag_examples:tokenize> The quick brown fox jumped over the lazy dog. </tag_examples:tokenize> </p> </body> </html>
  • 19. JSP Custom Tags Questions?
  • 20. Problems Create a JSP/custom tags based web site with master pages and menu navigation that allows: Adding numbers Printing all numbers in range 1..100 Both operations should be available from different JSP pages that reuse the master page layout.
  • 21. Problems (2) Create a JSP/custom tag for displaying a given collection of Books in a table. Every book is an object from a Book class with the following properties: ISBN Book title Author name Simple output:

Editor's Notes

  • #2: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #3: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #4: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #5: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #6: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #7: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #8: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #9: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #10: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #11: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #12: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #13: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #14: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #15: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #16: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #17: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #18: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##
  • #19: * 07/16/96 (c) 2006 National Academy for Software Development - http://academy.devbg.org* ##