1.1 Panimula sa JSP

Mayroong dalawang tanyag na paraan para magsulat ng servlet: imperative at declarative . Napag-usapan na namin ang una - ito ay, sa katunayan, isang Servlet. Ang pangalawa ay tinatawag na JSP (Java Server Pages), at makikilala natin ito ngayon.

Halimbawa ng Servlet JSP:


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

Hindi masyadong katulad ng classic na Servlet na nakasanayan natin, di ba? Ito ay totoo. Ang JSP ay isang HTML na pahina na may mga pagsingit ng Java code (naka-highlight sa berde) .

Nakikita mo, kung mayroon kang maraming Java code sa isang servlet at maliit na HTML code, kung gayon mas komportable kang gumamit ng isang klasikong servlet . Ngunit paano kung kailangan mo ng isang malaking HTML na pahina kung saan ilang linya lamang ang binago ng server?

Sa kasong ito, ang pinakasimpleng bagay ay ang gumawa ng HTML page na ito at kahit papaano ay isagawa ang Java code sa server mismo dito.

1.2 Pag-compile ng mga JSP

Tingnan natin ang isa pang halimbawa:


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

Nakakuha kami ng random na numero, at kung mas malaki ito sa 0.95, ipi-print namin ang text na "Maswerte ka, user!"

Ang Java code ay naka-highlight dito sa asul . Normal (hindi naka-highlight) - HTML code, at red - service tags , na tumutulong upang maunawaan kung nasaan ang Java code at kung nasaan ang HTML.

May napapansin ka bang kakaiba? Ang pagsasara ng curly brace "}"ay nasa isa pa "code block". Ano ang tamang paraan ng pagsulat ng naturang code? Paano ito gumagana?

Ang sagot ay magiging sobrang simple :)

Ang web server, pagkatapos nitong mahanap ang isang JSP file, isasama ito sa isang klasikong servlet. Batay sa itaas na pahina ng JSP, ang Servlet na ito ay bubuo:

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

Binuo lang ng web container ang servlet code, kung saan ang HTML ay naging text at ang Java code insert ay naging regular na Java code!