standard actions - <jsp:
JSTL tags - <c:, etc
custom tag libraries
EL - To avoid using Scripts (expression, declaration, scriptlet)
standard action: how will you get/set the attribute without scripts..? You can use the standard action to set/get the attributes, which can be used in the EL, since EL don't allow the scripts(expression, declaration, scriptlet)
JSTL : some of the tags, which have written already for readymade use(libraries).. for example:if you want to use for loop, if loop, switch case.. for things like this, you can use JSTL
custom tag: when JSTL is not enough/you want to do your custom/own things..you can write your own tags..
tag files: pls go thru' the link given below. This link is not only for tag files, but for the entire JSP2.0 features..
You could start with <c and <jsp tags, using them to display a collection of JavaBeans (the beans could represent cars, movies, or something else you like). Once you have those down, the usefulness of a tag file or custom taglib will also become less obtuse.
One advantage is that you could use an EL function inside the attribute of a tag, whereas a tag typically can't be placed inside the attribute of another tag.
"(a custom tag file) is a little like an EL function, except much more powerful and flexible. Where EL functions are nothing more than static methods, a tag handler class has access to tag attributes, the tag body, and even the page context so it can get scoped attributes and the request and response"