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

Print Friendly, PDF & Email

Leave a Reply

Your email address will not be published. Required fields are marked *