The tag handler, the TLD, and the JSP
The tag handler developer creates the TLD to tell both the Container and the JSP developer how to use the tag. A JSP developer doesn’t care about the <tag-class> element in the TLD; that’s for the Container to worry about. The JSP developer cares most about the uri, the tag name, and the tag syntax. Can the tag have a body? Does this attribute have to be a String literal, or can it be an expression? Is this attribute optional? What type does the expression need to evaluate to?
Think of the TLD as the API for custom tags. You have to know how to call it and what arguments it needs.
These three pieces—the tag handler class, the TLD, and the JSP are all you need to deploy and run a web app that uses the tag.