https://qdgbjsdnb.tistory.com/217



먼저 위 게시글에서 라이브러리, jar 파일 다운로드가 필요하다.







JSTL은 JSP Standard Tag Library는 JSP에서 사용하는 커스텀 태그로 자주 사용하는 코드들의 집합을


사용하기 쉽게 태그형식으로 만들어 놓은 라이브러리다.


여태껏 써오던 <%%> 부분이 정말 간단하게 표현된다.


먼저 JSP 파일에 사용할 태그 라이브러리를 선언해야 한다.


라이브러리 종류는 다음과 같다.



Core Tags

 변수선언, url, 조건문, 반복문 등 포함

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

 Formatting Tags

 메시지 형식, 숫자, 날짜 등 포맷

<%@taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt"%>

 Function Tags

 trim, substring과 같은 유용한 문자열 처리함수

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

 XML Tags

 XML을 읽고 파싱처리 등에 필요한 라이브러리

<%@taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>

 SQL Tags

 JSP에서 DB를 연동, 쿼리 실행

<%@taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql"%>



해당 taglib prefix 선언을 페이지 상단에 명시하고 사용하면 된다.


이 중 아래의 XML, SQL은 사용을 지양한다.


XML의 경우는 JSON을 사용하여 좀 더 효율적으로 사용하기 때문이고


SQL의 경우는 프로젝트 구조(MVC 패턴)상 JSP에 사용하지 않는다. 유지보수에도 영향을 끼치므로 MVC 패턴을 따르는걸 추천






예제를 통해 라이브러리의 태그들을 어떻게 쓰는지 보자.



Core Tags의 사용법




 - c:set 태그 : 변수선언


    <!-- Scope 생략 시 기본 pageScope가 된다. -->
    <c:set var="num1" value="100" scope="session"></c:set>
    <c:set var="num2" value="200" scope="session"></c:set>


 - c:set 태그 : 배열 또는 컬렉션으로 사용할 문자열 선언


    <c:set var="colors">red, yellow, green, orange, blue, magenta</c:set>




선언된 변수들은 ${ num1 }과 같이 EL 태그로 사용하면 된다.



 - c:remove 태그 : 변수 삭제
   
    <!-- 삭제 시 scope를 지정하지 않으면 모든 scope의 동일 이름의 변수를 제거한다. -->
    <c:remove var="num1" scope="session"/>
    <c:remove var="num2" scope="session"/>





※ 이스케이프 시퀀스 : <, >, &, 등의 특수문자를 &lt;와 &gt;과 &amp;로 바꿔서 인식한다.




 - c:out 태그 : 값 출력용


    <c:out value="core라이브러리의 <out> 태그는 값을 화면에 출력하는 태그이다."></c:out>
    <!-- escapeXml false로 지정하면, <, > 등을 태그로 인식하고, true로 지정하면 문자로 인식한다. 기본값은 true이다. -->



    <c:out value="<h2>데이터 출력</h2>" escapeXml="false"></c:out><br>
    <c:out value="<h2>데이터 출력</h2>" escapeXml="true"></c:out><br>
   
    <h2>c:out 태그의 default 속성</h2>
    <!-- el로 가져오는 값이 없는 경우 대체할 값에 대해 default 값으로 설정 가능 -->
    <c:out value="${ param.name }" default="아무개님"/>




 - c:if 태그 : 조건문, if의 경우는 else가 따로 없으므로 다시 if태그를 사용하면 된다.


    <c:set var="value1" value="9" scope="page"/>
    <c:set var="value2" value="3" scope="page"/>
   
    <c:if test="${ value1 >= value2 }">
        <h3>value1이 큽니다.</h3>
    </c:if>


    <c:if test="${ value1 < value2 }">
        <h3>value2가 큽니다.</h3>
    </c:if>




 - c:choose : switch문, c:when : case문, c:otherwise : default문



<c:choose>
        <c:when test="${ no == 1 }">
            <h3>안녕하세요</h3>
        </c:when>


        <c:when test="${ no eq 2 }">
            <h3>반갑습니다.</h3>
        </c:when>


        <c:otherwise>
            <h3>환영합니다.</h3>
        </c:otherwise>
</c:choose>




 - c:forEach태그 : for문


    <c:forEach begin="1" end="10">
        반복실행<br>
    </c:forEach>


   
    <c:forEach var="size" begin="1" end="7" step="1">
        <font size="${ size }">글자크기 ${ size }</font>
    </c:forEach>




 - c:forEach 태그 : 배열 또는 컬렉션 연속 처리에 for~each문처럼 사용할 수 있기에 매우 편리하다.


    <c:forEach var="color" items="${ colors }" varStatus="st">
        <font color="${ color }">
            ${ st.count } : 글자색 ${ color }<br>
        </font>
    </c:forEach>






 - c:forTokens 태그 : 문자열을 토큰으로 분리 처리할 때 사용 (split과 같다)
    <ul>
        <c:forTokens var="color" items="yellow blue pink red green" delims=" ">
            <li>${ color }</li>
        </c:forTokens>
    </ul>



  - 여러개의 토큰 문자를 가지고 분리 처리할 수도 있음


    <c:forTokens var="color" items="yellow-blue*pink/red green" delims="/*- ">
        ${ color }<br>
    </c:forTokens>






- c:url 태그 : 링크 설정 정보 별도 지정시 사용하는 태그 , param을 이용하여 값을 넘길 수 있다.


    <c:url var="fmtlink" value="testJstlCoreResult.jsp">
        <c:param name="num" value="77"></c:param>
    </c:url>


    <a href="${ fmtlink }">결과화면 연결</a>











+ Recent posts