JSTL (Java server pages Standard Tag Library)
JSP에서 사용하는 스크립트 요소로 인해 JSP 문서가 복잡해지는 경우가 많다.
이를 해결하기 위해 JSP에서 로직을 담당하는 부분인 if, for, while 등을 JSTL로 대치할 수 있다.
JSTL은 기존 html과 비슷한 형태를 하고 있어 코드의 가독성을 높일 수 있다.
JSTL에는 Core 태그, Formatting 태그, Sql 태그, Functions 태그가 존재한다.
JSTL을 사용하기 위해서는 페이지 상단에 디렉티브 태그를 사용해 JSTL을 사용할 것임을 선언해주어야한다.
Core 태그
<c:out>
화면에 데이터를 출력하는데 사용한다.
<c:out value="출력할 데이터"/>
<c:set>
사용할 변수를 설정하는데 사용한다.
<c:set var="사용할 변수명" value="데이터"/>
<c:remove>
설정한 변수를 제거할 때 사용한다.
<c:remove var="삭제할 변수명"/>
<c:catch>
예외 처리에 사용한다.
<c:catch var="익셉션 변수">
~ 처리할 내용 ~
</c:catch>
<c:if test="${익셉션 변수 != null}">
~ 예외 발생 시 처리할 내용 ~
</c:if>
<c:if>
조건문을 처리하는데 사용한다.
<c:if test="${조건식}">
~ 실행 내용 ~
</c:if>
<c:choose>
다중 조건문을 처리하는데 사용합니다.
Java의 switch문과 비슷한 역할을 한다.
<c:choose>
<c:when>처리할 내용</c:when>
<c:otherwise>처리할 내용</c:otherwise>
</c:choose>
<c:when>
<choose>의 서브 태그로 조건문이 참일 때 안에 작성된 코드를 수행한다.
<c:when test="${조건식}">
~ 처리할 내용 ~
</c:when>
<c:otherwise>
<choose>의 서브 태그로 <choose>에 작성된 모든 <when>의 조건문이 거짓일 때
안에 작성된 코드를 수행한다.
switch문에서 default와 비슷한 역할을 한다.
<c:otherwise>
~ 처리할 내용 ~
</c:otherwise>
<c:import>
URL을 사용하여 현재 페이지에 다른 페이지의 내용을 삽입할 때 사용한다.
디렉티브 태그나 액션 태그의 include 태그와 비슷하지만 가장 큰 차이라면
가져온 페이지 내용을 변수에 저장할 수 있다는 점이다.
<c:import url="header.jsp"/>
<c:import var="header" url="header.jsp"/>
만약 url 속성만 지정하면 import 태그가 작성된 자리에 가져온 페이지가 바로 출력되지만
var 속성이 지정되어있다면 바로 출력되지 않고
원하는 자리에 해당 변수를 사용하여 페이지를 출력해주면 된다.
<c:import var="navBar" url="navBar.jsp"/>
${navBar}
<c:forEach>
반복문을 처리하는데 사용한다.
Java의 for문과 비슷한다.
var : 반복문에서 사용하는 변수로 begin과 end 사이의 현재 반복 횟수를 반환한다.
begin : 반복문의 시작 숫자
end : 반복문의 종료 숫자
step : 반복 횟수의 증감값을 지정할 수 있다.
<c:forEach var="i" begin="1" end="10" step="1">
<%-- 1부터 10까지 1씩 증가하며 출력하는 반복문 --%>
<c:out value="${i}"/>
</c:forEach>
특히 DB를 통해 가져온 VO객체의 List에서 데이터를 꺼내올 때 편리하다.
var : items에서 꺼내온 객체 한 개
items : 꺼내올 데이터가 든 객체
varStatus : 현재 반복문의 상태를 가져오는 변수
<c:forEach var="vo" items="voList" varStatus="stat">
<c:out value="${stat.index}"/>
<c:out value="${stat.count}"/>
<c:out value="${v.id}"/>
<c:out value="${v.name}"/>
<c:out value="${v.age}"/>
<c:out value="${v.addr}"/>
</c:forEach>
varStatus는 반복문의 상태에 대한 값을 가진 변수를 지정할 수 있다.
varStatus에서 지정한 변수에는 index와 count 속성값이 존재한다.
index는 현재 반복문의 현재 인덱스 번호를 반환하고
count는 반복문의 수행 횟수를 반환한다.
또한 forEach를 통해 List에서 객체를 꺼내왔을 때 객체의 멤버변수에 접근하는 방법은
forEach의 var 속성에서 정한 변수명에 .필드명을 붙이면 객체의 필드값을 반환한다.
위 예시의 경우 VO 객체에는 id, name, age, addr이라는 멤버변수가 있고
var 속성에서 vo라는 이름을 붙여주었으므로
vo.id, vo.name, vo.age, vo.addr
라고 작성하여 객체의 멤버변수 값을 가져온다.
<c:forTokens>
구분자로 분리된 각각의 토큰을 처리하는데 사용한다.
<c:param>
URL 관련 태그, 특히 <c:import> 태그로 다른 페이지를 가져올 때
대상 페이지에 파라미터를 넘겨주는데 사용한다.
name 속성에 파라미터 이름을 설정하고
value 속성에 파라미터 값을 설정하면 된다.
<c:import url="member.jsp">
<c:param name="id" value="a001"/>
<c:param name="name" value="유재석"/>
</c:import>
<c:redirect>
설정한 경로로 이동하는데 사용한다.
<c:url>
URL을 재작성하는데 사용한다.
'JSP' 카테고리의 다른 글
| 내장 객체 (Implicit Object) (0) | 2022.12.28 |
|---|---|
| getRemoteAddr()의 반환값을 IPv4로 변경 (0) | 2022.12.28 |
| 액션 태그 (0) | 2022.12.23 |
| 디렉티브 태그 (0) | 2022.12.23 |
| JSP에서 JSTL을 사용하기 위한 준비 (0) | 2022.12.22 |