Servlet & JSP – 27 – JSP Standard Tag Library – 02
Merhaba Arkadaslar,
Bu bolumde JSP Standard Tag Library (JSTL) konusuna devam edecegiz. Onceki bolumde JSTL etiketlerini nasil kullanacagimizi ve gerekli jarlarin neler oldugundan bahsettik.
Bu bolumde inceleyecegimiz JSTL etiketleri ;
- <c:if>
- <c:choose>
- <c:when>
- <c:otherwise>
- <c:forEach>
- <c:forTokens>
<c:if>
if statement’ini JSTL etiketi olarak kullanabiliriz. c:if etiketi test attribute’u almaktadir.
== or eq Test for equality != or ne Test for inequality < or lt Test for less than > or gt Test for greater than <= or le Test for less than or equal >= or gt Test for greater than or equal && or and Test for logical AND || or or Test for logical OR ! or not Unary Boolean complement empty Test for empty variable values
cif.test
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <c:set var="result" scope="request" value="70"/> <c:if test="${result > 50}"> <p>You pass exam ! : <c:out value="${result}"/><p> </c:if> <c:set var="result2" scope="request" value="40"/> <c:if test="${result2 lt 50}"> <p>You failed ! ! : <c:out value="${result2}"/><p> </c:if> <c:set var="myName" scope="request" value="Levent"/> <c:if test="${myName eq 'Levent'}"> <p>Hello(eq) , ${myName}<p> </c:if> <c:if test="${myName =='Levent'}"> <p>Hello(==) , ${myName}<p> </c:if> </body> </html>
request scope’a bir kac attribute ekledik ve <c:if> etiketini kullandik. <c:if> etiketi olmasina karsin <c:else> , <c:elseIf> gibi etiketler yoktur.
<c:choose> , <c:when> , <c:otherwise>
<c:choose> etiketi icerisinde <c:when> ve <c:otherwise> etiketi kullanilabilir. <c:choose> etiketi if-else yapisi ya da switch yapisi gibi dusunebilir.
cchoose.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <c:set var="salary" scope="session" value="15000"/> <p>Your salary is : <c:out value="${salary}"/></p> <c:choose> <c:when test="${salary <= 2000}"> Low Salary </c:when> <c:when test="${salary < 10000}"> Salary is very good. </c:when> <c:otherwise> Excellent salary! </c:otherwise> </c:choose> </body> </html>
</c:otherwise> zorunlu degildir sart saglanmadigi durumda </c:otherwise> calisacaktir.
<c:forEach>
<c:forEach> etiketini for dongusu gibi kullanabiliriz.
<c:forEach> etiketi begin , end attribute degerlerine sahiptir.
<c:forEach var="x" begin="1" end="5"> <c:out value="${x}"/> </c:forEach>
step attribute degerini kullanarak increment/arttirim degerini ayarlayabiliriz.
<c:forEach var="x" begin="5" end="15" step="5"> <c:out value="${x}"/> </c:forEach>
<c:forEach> etiketini kullanarak dizi, list , mapler uzerinde iteration yapabiliriz.
items attribute alaninda array, list, map attribute objelerimizi kullanabiliriz.
cforeach2.jsp
<% int[] numbers = { 5, 10, 15, 20, 25, 30 }; request.setAttribute("numbersAttribute", numbers); %> <c:forEach var="number" items="${numbersAttribute}"> <c:out value="${number}" /> </c:forEach>
varStatus etiketini kullanabiliriz. Bu etiketteki degiskenimiz LoopTagStatus tipindedir.
<c:forEach var="number" items="${numbersAttribute}" varStatus="loopTagStatus"> index:<c:out value="${loopTagStatus.index}" /> <c:out value="${number}" /> <br> </c:forEach>
</c:forEach> etiketiyle List ve Map kullanabiliriz.
cforeach3.jsp
<% java.util.List<String> myList = new java.util.ArrayList<String>(); myList.add("element1"); myList.add("element2"); myList.add("element3"); request.setAttribute("myListAttribute", myList); %> <c:forEach var="element" items="${myListAttribute}"> <c:out value="${element}" /> </c:forEach>
var alaninda kullandigimiz isim uzerinden .key ve .value diyerek Map’teki key ve value degerlerine ulasabiliriz.
cforeach4.jsp
<% java.util.Map<String, String> myMap = new java.util.HashMap<String, String>(); myMap.put("key1", "value1"); myMap.put("key2", "value2"); myMap.put("key3", "value3"); request.setAttribute("myMapAttribute", myMap); %> <c:forEach var="entry" items="${myMapAttribute}"> <c:out value="${entry.key}" /> <c:out value="${entry.value}" /> </c:forEach>
<c:forTokens>
<c:forTokens> etiketini kullanarak ilgili delimiter’a gore tokenlara ayirma islemi yapabiliriz.
delims attribute zorunludur ve birden fazla delimiter kullanabiliriz.
cfortokens.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c"%> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> </head> <body> <c:forTokens items="value1 value2 value3 value4" delims=" " var="value"> <c:out value="${value}" /> </c:forTokens> <br> <c:forTokens items="value1,value2,value3,value4" delims="," var="value"> <c:out value="${value}" /> </c:forTokens> <br> <c:forTokens items="value1:value2;value3:value4" delims=", : ;" var="value"> <c:out value="${value}" /> </c:forTokens> </body> </html>
Yazimi burada sonlandiriyorum.
Herkese Bol Javali Gunler dilerim.
Be an oracle man , import java.*;
Levent Erguder
OCP, Java SE 6 Programmer
OCE, Java EE 6 Web Component Developer
Leave a Reply