7.1 c:if, c:herbiri için
Java kodu yerine etiketleri kullanan kodu herkes beğendi ve bu nedenle kapsamı genişletmeye karar verdiler. Ancak programlama, nesneler oluşturmak ve özelliklerini okumakla sınırlı değildir. Nesnelerin yöntemlerini çağırmanız, veritabanı ve diğer hizmetlerle çalışmanız gerekir. Ne yapalım?
Her Java deyimini bir etiket olarak göstermeniz yeterlidir. Oldu if
, olacak <if>
, oldu for
, olacak <for>
vb. Tamam, tamam, şaka yapıyorum, öyle değildi. İnsanlar bunu gerçekten yapmaya karar vermiş olamaz. Ama hayır, belki!
Programcıların koda herhangi bir etiket eklemesine izin verildi. Prensip olarak endişelenecek bir şey yok - JSP genişletilebilir bir standarttır. Ancak daha da ileri gittiler ve JSP Standart Etiket Kitaplığı - JSTL'yi yayınladılar. Bununla birlikte sayfa şöyle görünür:
<%@ taglib uri = "http://java.sun.com/jsp/jstl/core" prefix = "c" %>
<html>
<head>
<title> JSTL Example</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>
Bundan sonraki projelerinizde böyle bir kodla karşılaşmanız oldukça olasıdır, orada bazı açıklamalar yapacağım.
7.2 JSTL işlevleri
JSTL işlevleri 5 kategoriye ayrılır:
- Ana etiketler;
- Biçimlendirme etiketleri;
- SQL etiketleri;
- XML etiketleri;
- Çağırma işlevleri.
Hepsini listelemeyeceğim ama en popüler olanları listeleyeceğim. Ana etiketlerle başlayalım:
1 | <c:out> |
Belirtilen ifadeyi verir - <%= %> ile eşdeğerdir |
2 | <c:set> |
Bir ifadenin sonucunu bir değişkene yazar |
3 | <c:remove> |
Bir değişkeni siler |
4 | <c:catch> |
İstisnaları yakalar |
5 | <c:if> |
if'in analoğu |
6 | <c:choose> |
analog anahtar |
7 | <c:when> |
Select ile birlikte kullanılır |
8 | <c:otherwise> |
Select ile birlikte kullanılır |
9 | <c:import> |
Koda içerik eklemenizi sağlar (ithalat direktifine eşdeğerdir) |
10 | <c:forEach> |
her döngü için |
on bir | <c:param> |
İçe aktarma seçeneklerini belirlemenizi sağlar |
12 | <c:redirect> |
Yönlendirme |
13 | <c:url> |
Parametrelerle bir URL oluşturur |
Sadece bir örnek vereceğim ve bununla bitireceğim. Prensip olarak, biraz beceriden sonra böyle bir kodu okumak oldukça mümkündür. Ama yazmanı önermem.
<%@ 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>
Bir düşünün, Java kodunu etiketler biçiminde yazıyoruz, böylece JSP ayrıştırıcısı daha sonra bu etiketleri Java koduna dönüştürecek. Bu dünyada bir şeyler ters gitti.
Bu arada, kendi etiket kitaplıklarınızı yazabilirsiniz. Hatta bir keresinde onların olduğu bir projede çalıştım. Harika bir deneyim. Kütüphanede herhangi bir değişiklik yapılır yapılmaz tüm jsp anında bozulur.
Ne istiyorsun? Derleyici bu tür değişiklikleri izlemez. Oluşturulan HTML sayfalarını görüntülerken yalnızca görsel olarak bulunabilirler. Ve bunlar önemsiz olmayan durumlarda ortaya çıkan bazı nadir senaryolarsa ... Tanrı arka uç geliştirmeyi ve statik yazmayı korusun!