JavaRush /Kurslar /All lectures for UZ purposes /JSP: servletni deklarativ usulda berish

JSP: servletni deklarativ usulda berish

All lectures for UZ purposes
Daraja, Dars
Mavjud

1.1 JSP bilan tanishuv

Servlеt yozishning ikki mashhur usuli bor: imperativ va deklarativ. Birinchisini allaqachon bilamiz — bu, asosan, Servlet. Ikkinchi usul esa JSP (Java Server Pages) deb ataladi, endi u bilan tanishamiz.

JSP servlеtining misoli:


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

Bizga tanish bo'lgan klassik Servletdan unchalik ham o'xshamaydigan narsa, to'g'rimi? Ha, xuddi shunday. JSP – bu HTML-sahifa bo'lib, unda Java-kodning qo'shimchalari (yashil rang bilan ajratilgan).

Qarasang, agar sening servlеtingda Java-kodi ko'p va HTML-kodi kam bo'lsa, unda klassik servlеtni qo'llash qulayroq. Agar kattaroq HTML-sahifangiz bo'lsa va u yerda server orqali faqatgina bir necha qator o'zgarishi kerak bo'lsa, nima qilish kerak?

Bu holda eng osoni shu HTML-sahifani yaratish va qandaydir usulda serverda Java-kodni bevosita bajarish.

1.2 JSP kompilyatsiyasi

Keling yana bir misolni ko'rib chiqamiz:


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

Biz tasodifiy son olamiz va agar u 0.95 dan katta bo'lsa, "Baxtli odamsan, user!" matnini chiqaramiz.

Moviy rangda Java-kod ajratilgan. Oddiy (ajratilmasdan) – HTML-kod, qizil rangda esa xizmati tеglar, ular Java-kodi qayerda va HTML qayerda ekanligini aniqlashga yordam beradi.

Bir oz g'alati narsa sezganmisiz? Yopuvchi qavs "}" boshqa "kod bloki"da joylashgan. Bunday kodni to'g'ri yozish qanday? Bu umuman qanday ishlaydi?

Javob juda oddiy :)

Veb-server JSP-faylni topgandan so'ng, uni klassik servlеtga kompilyatsiya qiladi. Yuqoridagi JSP-sahifadan kelib chiqib, bunday Servlet generatsiya qilinadi:


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>Baxtli odamsan, user! </h2><p>(" + num + ")</p>");
        }
    out.print("</body>"); 
    out.print("</html>"); 
    }
}

Veb-konteyner shunchaki servlеt kodini generatsiya qildi, HTML matnga aylantirildi, va Java-kod qo'shimchalari esa oddiy Java-kodga aylandi!

Izohlar
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION