[JSP] JSTL

형이·2023년 8월 29일
0

JSP

목록 보기
31/32
post-thumbnail
post-custom-banner

📝 JSP

🖥️ 1. JSTL

JSP Standard Tab Library

  • 연산이나 조건문, 반복문을 편하게 처리할 수 있으며, JSP 페이지 내에서 자바코드를 사용하지 않고도 로직을 구현할 수 있도록 효율적인 방법을 제공한다.
  • for(초기식; 조건식; 증감식){} → <c:forEach> ... </c:forEach>

1-1. JSTL 라이브러리

  • CORE
    <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
  • FUNCTION
    <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %>

 📌 FUNCTION 부분은 SJTL 선언문 밑에 작성해야 한다.

1-2. JSTL core 태그

  • <c:set /> : 변수를 만들 때 사용
  • <c:out> </c:out> : 값을 출력 (EL문을 좀 더 많이 쓴다)
EX) 

    <body>
        <h2>JSTL TEST(변수)</h2>
        <!-- 변수선언 / scope : 어느 범위까지 사용하는지에 대한 정의, page는 'pageContext' -->
        <!-- jstl로 변수 선언 시 setAttribute로 값을 넣기 때문에 el문으로 값을 가지고 올 수 있다. -->
        <c:set var="userid" value="apple" scope="page"/>
        회원아이디 : <c:out value="${userid }"/><br/>
        회원아이디 : ${userid }<br/>

        <hr/>

        <%-- <c:set>이 사이에 들어가는 값이 value</c:set> --%>
        <c:set var="userid" scope="session">admin</c:set>
        <c:set var="userpw" scope="session">admin0000</c:set>
        회원아이디 : ${userid }<br/>
        회원패스워드 : ${userpw }<br/>
        회원아이디 : ${sessionScope.userid }<br/>
        회원패스워드 : ${sessionScope.userpw }<br/>

    </body>
  • <c:choose> </c:choose> : 조건 제어 (switch문)

 ✔️ 내부에 c:when, c:otherwise문만 있어야 한다.

EX)

    <body>
        <h2>JSTL TEST2 (제어-조건식)</h2>
        <c:set var="num" value="100"/>
        <c:if test="${num gt 50 }">
            <script>
                alert("이 수는 50보다 크다.");
            </script>
        </c:if>

        <c:if test="${num gt 30 }">
            <script>
                alert("이 수는 30보다 크다.");
            </script>
        </c:if>

        <hr/>

        choose문 사용 <br/>
        (if ~ else문의 경우 jstl에서는 choose를 이용하여 구성하여야 한다.) <br/>
        <c:choose>
            <c:when test="${num gt 50 }">
                이 수는 50보다 크다!
            </c:when>
            <c:when test="${num gt 30 }">
                이 수는 30보다 크다!
            </c:when>
            <c:when test="${num gt 10 }">
                이 수는 10보다 크다!
            </c:when>
            <c:otherwise>
                이 수는 그 외의 숫자이다!
            </c:otherwise>
        </c:choose>
    </body>
    
  • <c:when> </c:when> : 조건 제어 (case문)
  • <c:otherwise> </c:otherwise> : 조건 제어 (default)
EX)

    <body>
        <c:choose>
            <%-- pram.userid가 empty일 때 --%>
            <c:when test="${empty param.userid }">
                <form action="">
                    아이디 : <input type="text" name="userid"/><br/>
                    비밀번호 : <input type="password" name="userpw"/><br/>
                    <input type="submit"/>
                </form>
            </c:when>
            <%-- pram.userid가 empty가 아닐 때 --%>
            <c:otherwise>
                <c:set var="userid" value="${param.userid }" />
                <c:set var="userpw" value="${param.userpw }" />
                <c:choose>
                    <c:when test="${userid ==  'apple' }">김사과</c:when>
                    <c:when test="${userid ==  'admin' }">관리자</c:when>
                    <c:otherwise>비회원</c:otherwise>
                </c:choose>
            </c:otherwise>
        </c:choose>
    </body>
  • <c:forEach> </c:forEach> : 반복 제어 (for문)
EX)

    <body>
        <%-- for( int i=0; i<=10; i++) --%>
        <c:forEach var="i" begin="0" end="10" step="1">
            ${i}
        </c:forEach>
        <hr/>

        <c:set var="arData" value="<%=new int[]{10,20,30,40,50} %>" />
        <c:forEach var="i" begin="0" end="4" step="1">
            ${arData[i]}
        </c:forEach>
        <hr/>

        <c:forEach var="data" items="${arData }">
            ${data }
        </c:forEach>
        <hr/>

        <%
            HashMap<String, Integer> map = new HashMap<>();
            map.put("하나", 1);
            map.put("둘", 2);
            map.put("셋", 3);
        %>
        <c:set var="map" value="<%=map %>"/>
        <c:forEach var="entry" items="${map }">
            ${entry.key } : ${entry.value }<br/>
        </c:forEach>
    </body>

1-3. JSTL function 태그

EX)

<body>
	<%
		HashMap<String, String> map = new HashMap<>();
		map.put("1", "1");
		map.put("2", "2");
		map.put("3", "3");
		map.put("4", "4");
		map.put("5", "5");
	%>
	
	<c:set var="map" value="<%=map %>" />
	<c:set var="str1" value="jstlfn"/>
	
	<h1>Function 태그</h1>
	
	length (map)	: ${fn:length(map) }<br/>
	length (str1)	: ${fn:length(str1) }<br/>
	toUpperCase(str1) : ${fn:toUpperCase(str1) }<br/>
	toLowerCase(str1) : ${fn:toLowerCase(str1) }<br/>

</body>
post-custom-banner

0개의 댓글