1.1 Wprowadzenie do JSP

Istnieją dwa popularne sposoby pisania serwletów: imperatywny i deklaratywny . Zajmowaliśmy się już pierwszym - w rzeczywistości jest to Servlet. Drugi nazywa się JSP (Java Server Pages) i teraz się z nim zapoznamy.

Przykład JSP serwletu:


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

Niezbyt podobny do klasycznego serwletu, do którego jesteśmy przyzwyczajeni, prawda? To prawda. JSP to strona HTML ze wstawkami kodu Java (zaznaczonymi na zielono) .

Widzisz, jeśli masz dużo kodu Java w serwlecie i mało kodu HTML, to wygodniej jest używać klasycznego serwletu . Ale co, jeśli potrzebujesz dużej strony HTML, w której serwer zmienia tylko kilka wierszy?

W takim przypadku najprościej byłoby utworzyć tę stronę HTML i w jakiś sposób wykonać kod Java na serwerze bezpośrednio w niej.

1.2 Kompilowanie stron JSP

Spójrzmy na inny przykład:


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

Otrzymujemy losową liczbę, a jeśli jest większa niż 0,95, drukujemy tekst „Masz szczęście, użytkowniku!”

Kod Java jest tutaj podświetlony na niebiesko . Normalny (niepodświetlony) — kod HTML i czerwony — tagi usług , które pomagają zrozumieć, gdzie znajduje się kod Java, a gdzie HTML.

Czy zauważyłeś coś dziwnego? Zamykający nawias klamrowy "}"znajduje się w innym pliku "code block". Jaki jest właściwy sposób napisania takiego kodu? Jak to w ogóle działa?

Odpowiedź będzie bardzo prosta :)

Serwer WWW po znalezieniu pliku JSP kompiluje go w klasyczny serwlet. W oparciu o powyższą stronę JSP zostanie wygenerowany ten serwlet:

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

Kontener WWW właśnie wygenerował kod serwletu, w którym kod HTML zamienił się w tekst, a wstawki kodu Java stały się zwykłym kodem Java!