1.1 Pengenalan kepada JSP

Terdapat dua cara popular untuk menulis servlet: imperative dan declarative . Kami telah menangani yang pertama - ini sebenarnya, Servlet. Yang kedua dipanggil JSP (Halaman Pelayan Java), dan kita akan berkenalan dengannya sekarang.

Contoh JSP Servlet:


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

Tidak begitu serupa dengan Servlet klasik yang biasa kita gunakan, bukan? Ini adalah benar. JSP ialah halaman HTML dengan sisipan kod Java (diserlahkan dalam warna hijau) .

Anda lihat, jika anda mempunyai banyak kod Java dalam servlet dan sedikit kod HTML, maka anda lebih selesa menggunakan servlet klasik . Tetapi bagaimana jika anda memerlukan halaman HTML yang besar di mana hanya beberapa baris diubah oleh pelayan?

Dalam kes ini, perkara paling mudah ialah mencipta halaman HTML ini dan entah bagaimana melaksanakan kod Java pada pelayan betul-betul di dalamnya.

1.2 Menyusun JSP

Mari lihat contoh lain:


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

Kami mendapat nombor rawak, dan jika lebih besar daripada 0.95, kami mencetak teks "Anda bertuah, pengguna!"

Kod Java diserlahkan di sini dengan warna biru . Normal (tidak diserlahkan) - kod HTML dan merah - teg perkhidmatan , yang membantu memahami lokasi kod Java dan di mana HTML berada.

Adakah anda perasan sesuatu yang ganjil? Baju kurung kerinting penutup "}"ada di tempat lain "code block". Apakah cara yang betul untuk menulis kod tersebut? Bagaimana ia berfungsi?

Jawapannya akan sangat mudah :)

Pelayan web, selepas ia menemui fail JSP, menyusunnya menjadi servlet klasik. Berdasarkan halaman JSP di atas, Servlet ini akan dihasilkan:

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

Bekas web hanya menghasilkan kod servlet, di mana HTML bertukar menjadi teks dan sisipan kod Java menjadi kod Java biasa!