1.1 Introducere în JSP

Există două moduri populare de a scrie un servlet: imperativ și declarativ . Ne-am ocupat deja de primul - acesta este, de fapt, un Servlet. Al doilea se numește JSP (Java Server Pages) și ne vom familiariza acum cu el.

Exemplu de servlet JSP:


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

Nu prea seamănă cu Servlet-ul clasic cu care suntem obișnuiți, nu-i așa? Asta este adevărat. JSP este o pagină HTML cu inserții de cod Java (evidențiate în verde) .

Vedeți, dacă aveți mult cod Java într-un servlet și puțin cod HTML, atunci vă simțiți mai confortabil să utilizați un servlet clasic . Dar ce se întâmplă dacă aveți nevoie de o pagină HTML mare în care doar câteva rânduri sunt modificate de către server?

În acest caz, cel mai simplu ar fi să creați această pagină HTML și să executați cumva codul Java pe server chiar în ea.

1.2 Compilarea JSP-urilor

Să ne uităm la un alt exemplu:


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

Obținem un număr aleatoriu, iar dacă este mai mare de 0,95, tipărim textul „Ai noroc, utilizator!”

Codul Java este evidențiat aici cu albastru . Normal (nu evidențiat) - cod HTML și roșu - etichete de serviciu , care ajută la înțelegerea unde este codul Java și unde este HTML.

Observați ceva ciudat? Acolada de închidere "}"este într-o altă "code block". Care este modul corect de a scrie un astfel de cod? Cum funcționează?

Raspunsul va fi super simplu :)

Serverul web, după ce găsește un fișier JSP, îl compilează într-un servlet clasic. Pe baza paginii JSP de mai sus, acest Servlet va fi generat:

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>");
    }
}

Containerul web tocmai a generat codul servlet, unde HTML-ul s-a transformat în text, iar inserțiile de cod Java au devenit cod Java obișnuit!