1.1 Présentation des JSP

Il existe deux manières courantes d'écrire une servlet : impérative et déclarative . Nous avons déjà traité du premier - il s'agit en fait d'un servlet. La seconde s'appelle JSP (Java Server Pages), et nous allons nous familiariser avec elle maintenant.

Exemple de JSP de servlet :


<html> 
    <body> 
        <% out.print(2*5); %> 
    </body> 
 </html> 

Pas très similaire au Servlet classique auquel nous sommes habitués, n'est-ce pas ? C'est vrai. JSP est une page HTML avec des insertions de code Java (surlignées en vert) .

Vous voyez, si vous avez beaucoup de code Java dans une servlet et peu de code HTML, alors vous êtes plus à l'aise avec une servlet classique . Mais que se passe-t-il si vous avez besoin d'une grande page HTML dans laquelle seules quelques lignes sont modifiées par le serveur ?

Dans ce cas, le plus simple serait de créer cette page HTML et d'exécuter d'une manière ou d'une autre le code Java sur le serveur directement dedans.

1.2 Compilation des JSP

Prenons un autre exemple :


<html> 
  <body> 
    <%
        double num = Math.random();
        if (num > 0.95) {
     %>
         <h2>You are lucky, user!</h2><p>(<%= num %>)</p>
    <%
        }
    %> 
  </body> 
</html> 

Nous obtenons un nombre aléatoire, et s'il est supérieur à 0,95, nous imprimons le texte "Tu as de la chance, utilisateur !"

Le code Java est surligné ici en bleu . Normal (non mis en surbrillance) - code HTML et balises de service rouges , qui aident à comprendre où se trouve le code Java et où se trouve le HTML.

Vous remarquez quelque chose d'étrange ? L'accolade fermante "}"est dans un autre "code block". Quelle est la bonne façon d'écrire un tel code? Comment ça marche même?

La réponse sera super simple :)

Le serveur Web, après avoir trouvé un fichier JSP, le compile dans un servlet classique. Basé sur la page JSP ci-dessus, ce servlet sera généré :

public class HelloServlet extends HttpServlet {
    protected void doGet(HttpServletRequest request, HttpServletResponse response)  throws Exception {
    PrintWriter out = response.getWriter();
    out.print("<html> ");
    out.print("<body>");
        double num = Math.random();
        if (num > 0.95) {
            out.print("<h2>You're lucky user! </h2><p>(" + num + ")</p>");
        }
    out.print("</body>");
    out.print("</html>");
    }
}

Le conteneur Web vient de générer le code du servlet, où le HTML s'est transformé en texte et les insertions de code Java sont devenues du code Java normal !