TagLib bilan Tanishuv

All lectures for UZ purposes
Daraja, Dars
Mavjud

7.1 c:if, c:forEach

Java-kod o'rniga taglardan foydalanish hammani qiziqtirdi, shuning uchun uni qo'llash sohasini kengaytirishga qaror qilishdi. Lekin ob'ektlarni yaratish va ularning xususiyatlarini o'qish bilan dasturlash cheklanmaydi. Ob'ektlarning metodlarini chaqirish, ma'lumotlar bazasi va boshqa xizmatlar bilan ishlash kerak. Nima qilish kerak?

Har bir Java operatorini tag tarzida ifodalash kerak. if bor edi, u <if> bo'ladi, for bor edi, u <for> bo'ladi va hokazo. Xo'p, xo'p, hazillashdim, bunday narsalar yo'q edi. Lekin odamlar chindan ham buni qilishga qaror qilishgan bo'lishi mumkinmi? Ha, mumkin!

Dasturchilar kodga har qanday tag qo'shishga ruxsat berishdi. Aslida bu qo'rqinchli emas - JSP standarti kengaytirilishi mumkin. Lekin ular bundanda oldinga borib, JSP Standard Tag Library - JSTL ni chiqarishdi. Uni qo'llagan sahifa quyidagicha ko'rinadi:



<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
 
<html>
   <head>
       <title> JSTL Misol</title>
   </head>
 
   <body>
 <c:set var = "salary" scope = "session" value = "${2000*5}"/> <c:if test = "${ salary > 2000}">
            <p>My salary is: <c:out value = "${salary}"/><p>
 </c:if>
   </body>
</html>

Kelajakdagi loyihalaringizda bunday kodni ko'rishingiz mumkin, shuning uchun ba'zi tushuntirishlar kiritamiz.

7.2 JSTL Funksiyalari

JSTL funksiyalari 5 toifaga bo'linadi:

  • Asosiy taglar;
  • Formatlash taglari;
  • SQL taglari;
  • XML taglari;
  • Funksiyalarni chaqirish.

Hammasini keltirmayman, lekin eng mashhurlarini ko'rsataman. Asosiy taglardan boshlaymiz:

1 <c:out> Ko'rsatilgan ifodani chiqaradi – <%= %> analogi
2 <c:set> Ifoda natijasini o'zgaruvchiga yozadi
3 <c:remove> O'zgaruvchini o'chiradi
4 <c:catch> Istisnolarni ushlaydi
5 <c:if> If analogi
6 <c:choose> Switch analogi
7 <c:when> Choose bilan birga ishlatiladi
8 <c:otherwise> Choose bilan birga ishlatiladi
9 <c:import> Kodga kontentni qo'shishga imkon beradi (import direktivasi ekvivalenti)
10 <c:forEach> For each tsikli
11 <c:param> Import uchun parametrlar o'rnatishga imkon beradi
12 <c:redirect> Yo'naltirish
13 <c:url> Parametrlari bilan URL yaratadi

Faqat bitta misol keltiraman va shuni tugatamiz. Aslida, biroz amaliyotdan keyin, bunday kodni o'qish mumkin. Lekin yozish ancha murakkab:



<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
 
<html>
   <head>
      <title> Each Tag Example</title>
   </head>
 
   <body>
 <c:forEach var = "i" begin = "1" end = "5">
            Item <c:out value = "${i}"/><p>
 </c:forEach>
   </body>
</html>

O'ylab ko'ring, biz Java-kodni taglar ko'rinishida yozamiz, shunda JSP-parser ushbu taglarni Java-kodga aylantiradi. Bu dunyoda biror narsa noto'g'ri ketmoqda.

Aytgancha, o'z tag kutubxonalarini yozish mumkin. Men hatto bunday kutubxonalar bor loyihada ishlaganman. Zo'r tajriba edi. Kutubxonaga biron bir o'zgartirish kiritilgan zahotiyoq butun jsp buziladi.

Nima deb o'yladingiz? Kompilyator bu o'zgarishlarni kuzatmaydi. Ularni faqat generatsiyalangan HTML-sahifalarni ko'rib chiqishda vizual ravishda topish mumkin. Va agar bu noodatiy vaziyatlarda yuzaga keladigan kamdan-kam stsenariylar bo'lsa... Xudo backend-rivojlanishni va statik tipizatsiyani marhamat qilsin!

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