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!