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"/>
※ 이스케이프 시퀀스 : <, >, &, 등의 특수문자를 <와 >과 &로 바꿔서 인식한다.
- 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>