<%= et 
              %>. Elle est passée en argument de la méthode
              out.print() dans la méthode
              _jspService() de la servlet générée par Tomcat. Typiquement, Tomcat affiche le retour de la méthode
              toString() de cet objet sur la page HTML.
             
          <%! et 
              %>. Tout ce qui se trouve entre ces tags est placé à l’extérieur de toute méthode, dans la classe générée. On peut donc entre autre déclarer des variables ou des méthodes par ce biais. Voyons ceci sur deux exemples.
              
            Exemple 42. Scriplet de déclaration
<%! // déclaration d'une variable private String blm = "Bonjour le monde" ;%> ... <%! // déclaration d'une méthode private void setBlm (String s) { blm = s ; } %> ... <%= blm %>
request : contient une référence sur l’objet de type
                    HttpServletRequest qui contient la requête à cette page. Les en-têtes HTTP sont disponibles au travers de cet objet.
                   
                response : référence sur le flux sortant de la servlet. Une JSP ne touche en général pas explicitement au flux sortant. Il est possible de modifier les en-tête HTTP via cet objet, y compris dans le corps de la page. On veillera toutefois à ne faire de telles modifications que si le buffer de sortie n’a pas déjà été vidé vers le client, même partiellement. Si tel était le cas, les modifications de l’en-tête ne seraient pas prises en compte.
                   
                out : cette variable est de type 
                    Writer. C’est celle qui sert à envoyer les données vers le client. C’est une instance de la classe
                    JspWriter, un 
                    Writer qui permet de modifier de façon dynamique la taille du buffer associé.
                   
                config : il s’agit de la variable de type
                    ServletConfig utilisée pour initialiser la page.
                   
                pageContext : objet de type 
                    PageContext. Cette classe abstraite se trouve dans le package 
                    javax.servlet.jsp. Elle contient des méthodes qui permettent d’accéder à toutes les variables déclarées par défaut. Si l’on a besoin de passer toutes ces variables à une méthode, il est donc efficace de lui passer
                    pageContext à la place.
                   
                session : variable de type 
                    Httpession. On peut donc lui attacher des objets, puisqu’une JSP est une servlet. Cette variable représente la session dans laquelle se trouve la requête.
                   
                application : variable de type 
                    ServletContext, à laquelle on peut aussi attacher des objets. Cette variable modélise l'application web dans laquelle on se trouve.
                   
                page : variable qui modèlise la page dans laquelle on se trouve. Elle contient une référence sur
                    this.
                   
                directive peut prendre trois valeurs : 
              page, 
              include et 
              taglib. Suivant la valeur prise, certains attributs peuvent être ajoutés ou non.
              
            La directive 
              page peut prendre douze attributs différents.
              
            import : cet attribut précise les packages ou les classes à importer pour la servlet qui sera générée.
                   
                language : cet attribut précise dans quel langage de programmation la page est écrite. En fait, seule la valeur
                    java est supportée
                   
                contentType : indique quel est le type MIME de la page générée. La valeur peut être n’importe quel type MIME valide.
                   
                isThreadSafe : cet attribut permet de générer une méthode
                    _jspService() qui ne pourra être appelée que par un seul thread à la fois. Les valeurs prises sont 
                    true et 
                    false. La valeur par défaut est
                    false.
                   
                session : contrôle le fait qu’un objet de type
                    HttpSession va être associé à cette page ou non. Les valeurs possibles sont 
                    true et 
                    false, qui est la valeur par défaut. Une bonne habitude est de le mettre à
                    false si l’on n’a pas besoin d’accéder à la session courante dans cette page.
                   
                buffer : spécifie la taille du buffer de sortie associé à la variable
                    out. Les valeurs prises sont 
                    none ou 
                    xxkb, où
                    xx est un nombre.
                   
                autoflush : contrôle si le buffer doit être envoyé automatiquement au client ou pas. S’il devient plein, une exception sera jetée. Les valeurs acceptées sont
                    true ou 
                    false, qui est la valeur par défaut. La valeur
                    false est interdite si l’attribut
                    buffer a été mis à 
                    none.
                   
                extends : utilisé par les équipes qui développent des serveurs comme Tomcat. Le développeur de servlet n’a pas à l’utiliser.
                   
                info : fixe la valeur de la chaîne de caractères renvoyée par la méthode
                    getServletInfo().
                   
                errorPage : contient un lien vers une page JSP qui sera appelée pour traiter toute exception jetée mais non captée. Cette page d’erreur doit obligatoirement posséder l’attribut
                    isErrorPage, positionné à
                    true.
                   
                isErrorPage : indique si la page courante est une page d’erreur ou pas. Si tel est le cas, une variable supplémentaire est disponible dans la méthode
                    _jspService() : 
                    exception. Cette variable contient une référence sur l’exception qui a généré l’appel à cette page.
                   
                pageEncoding : définit le codage de caractères qui doit être utilisé sur la page. La valeur par défaut est ISO-8859-1.
                   
                
                Exemple 44. Utilisation d'une directive
                  page
                
                
              
<%@page contentType="text/html" pageEncoding="UTF-8" import="java.util.List"%>
include permet d'insérer du contenu statique (HTML pur) ou dynamique (scriplets ou éléments JSP) au moment de la compilation de la servlet. Elle ne peut prendre qu'un seul attribut,
              file, qui pointe vers la ressource à inclure. Voyons un exemple.
              
                        taglib dans la suite de ce document