Les bibliothèques de balises permettent une séparation plus propre entre le look and feel de votre application et sa logique, par rapport à la syntaxe scriptlet originale offerte par JSP. Le remplacement des scriptlets par des balises personnalisées élimine la confusion gênante de l'impératif Java et du balisage déclaratif qui était courant dans les JSP.
Dans un monde idéal, les concepteurs Web seraient en mesure d'éditer des fichiers JSP en utilisant une combinaison de balises standard et de balises personnalisées. Les modèles de balisage communs peuvent être factorisés dans des fichiers de balises; s'ils ont besoin de quelque chose qui nécessite une nouvelle logique, un programmeur peut implémenter une classe d'étiquette pour eux.
Il existe deux façons d'implémenter une bibliothèque de balises: les fichiers de balises et les classes de balises. Les fichiers de balises utilisent une syntaxe proche de celle de JSP, mais peuvent être paramétrés avec des attributs dans la balise. Les classes de balises sont des classes Java normales qui implémentent une interface spéciale et sont associées à un descripteur de bibliothèque de balises — un fichier XML qui décrit le nom de balise, les attributs et la classe d'implémentation.
La plupart des frameworks Web Java sont livrés avec une bibliothèque de balises personnalisée qui aide les développeurs à utiliser plus facilement les fonctionnalités du framework. D'autres bibliothèques de balises, telles que JSTL, fournissent des fonctionnalités utiles dans presque toutes les applications et peuvent être utilisées avec n'importe quel framework.