jsp 표준 태그 라이브러리
JSTL Jsp Standard Tag Library
(확장 태그여서 별도의 라이브러리 필요)
https://mvnrepository.com/
javax.servlet/jstl 검색
첫번째 나온 검색 결과 클릭
버전 1.2 클릭
jar타입으로 다운
다운로드 받은 후 jar파일을
web-inf 폴더 - lib 폴더 안에 넣기
(오라클 드라이버 설치한 경로)
JSTL 사용하려는 jsp 파일에서는 taglib 지시어를 추가해야함 (접두어, uri)
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
JSTL 5가지 태그 제공
1. Core태그
기능 : 변수 선언, 조건문/반복문, URL처리
접두어 - c
URI : http://java.sun.com/jsp/jstl/core
<c:태그명></c:태그명>
<c:태그명 />
2. Formatting태그
기능 : 숫자, 날짜, 시간, 포맷 지정
접두어 - fmt
URI : http://java.sun.com/jsp/jstl/fmt
3. XML태그
기능 : XML파싱
접두어 - x
URI : http://java.sun.com/jsp/jstl/xml
4. Function태그
기능 : 컬렉션, 문자열 처리
접두어 - fm
URI : http://java.sun.com/jsp/jstl/functions
5. SQL태그
기능 : 데이터베이스 연결 및 쿼리 실행
접두어 - sql
URI : http://java.sun.com/jsp/jstl/sql
코어(Core) 태그 속성
set : jsp에서 사용될 변수 설정
remove : 설정한 변수를 제거
if : 조건에 따라 내부 코드 수행
choose : 다중 조건을 처리할 때 사용
forEach : 콜렉션이나 Map의 각 항목을 처리할 때 사용
forTokens : 구분자로 분리된 각각의 토큰을 처리할 때 사용
import : URL을 사용하여 다른 자원의 결과를 삽입
redirect : 지정한 경로로 리다이렉트함
url : URL을 재작성함
catch : 인셉션 처리에 사용
out : JspWriter에 내용을 알맞게 처리한 후 출력
1)<c:set> 태그
변수나 자바빈스 생성 때 사용 (setAttribute()와 같은 역할)
<c:set var="변수명" value="값" scope="영역" />
<c:set var="변수명" scope="영역">
value 속성에 들어갈 값
</c:set>
<%
Person person1 = new Person();
request.setAttribute("person", person1)
%>
-------------------------------------------------------
<c:set var="person" value="<%new Person()%>" />
<c:set target="el" property="필드명" value="값" />
2) <c:remove> 태그
<c:set> 지정한 변수를 제거할 때 사용 (removeAttribute()메소드와 같은 역할)
remove 태그 속성
var : 삭제할 변수명 설정
scope : 삭제할 변수의 영역 지정, 지정하지 않으면 모든 영역의 변수가 삭제
3) <c:if> 태그
자바의 if와 동일하게 제어 구문을 작성할 때 사용
else가 별도로 없기 때문에 여러 조건을 나열하는 형태로 작성하기는 어려움
<c:if test="조건" var="변수명" scope="영역">
조건이 true일 때 출력될 문장
</c:if>
4) <c:choose>, <c:when>, <c:otherwise> 태그
<c:choose> 태그는 다중 조건을 통해 판단해야할 때 사용
하위 태그로 <c:when>, <c:otherwise> 태그를 사용
<c:choose>
<c:when test="조건1"> 조건1을 만족하는 경우 </c:when>
<c:when test="조건2"> 조건2을 만족하는 경우 </c:when>
<c:otherwise test="조건1"> 아무 조건을 만족하지 않는 경우 </c:otherwise>
</c:choose>
5) <c:forEach> 태그
반복을 위해 사용
일반 for문 형식
<c:forEach var="변수명" begin="시작값" end="마지막값" step="증가값" />
for(int i=0; i<100; i++) {
}
향상된 for문 형식
<c:forEach var="변수명" items="컬렉션 혹은 배열" />
for(String str: strList)
forEach 태그 속성
var : 변수명 지정
items : 반복을 위한 객체를 지정, 배렬, 컬렉션 등을 지정 (향상된 forEach)
begin : 시작값
end : 종료값
step : 증가할 값
varStatus : 루프의 현재 상태를 알려주는 변수의 이름을 지정
varStatus를 통해 얻을 수 있는 값
current: var에 지정한 현재 루프의 변수값 반환
index : var에 지정한 현재 루프의 변수값 반환 (향상된 for문에서 사용)
count : 실제 반복횟수(1~마지막)
first : 루프의 처음일 때 true 반환
last : 루프의 마지막일 때 true 반환
6) <c:forTokens> 태그
구분자를 기준으로 문자열을 나눠 토큰의 갯수만큼 반복함
토큰 : 문법적으로 의미있는 최소단위
"사과, 딸기, 오렌지, 수박"
<c:forTokens items="문자열" delims="문자열 구분자" var="변수명" />
<%
String fruits = "사과, 딸기, 오렌지, 수박";
%>
<c:forTokens items="<%=fruits%>" delims="," var="fru">
<p>%{fru}</p>
</c:forTokens>
7) <c:import> 태그
<jsp:include> 액션 태그와 같이 외부 파일을 현재 위치에 삽입할 때 사용
<c:import url="페이지 경로" />
<c:import url="페이지 경로" var="변수명" />
${변수명}
8) <c:redirect> 태그
내장객체 response의 sendRedirect()와 동일하게
페이지 이동을 처리할 때 사용
<c:redirect url="이동할 경로?userParam1=aaa&userParam2=bbb" />
or
<c:redirect url="../inc/otherpage.jsp">
<c:param name="userParam1" value="aaa" />
<c:param name="userParam2" value="bbb" />
</c:redirect>
9) <c:url> 태그
지정한 경로와 매개변수를 이용해 url 생성
<a>의 href 속성이나 <form> 태그의 action 속성에 사용할 수 있음
<c:url value="설정한 경로" />
<c:url value="설정한 경로" var="변수명" />
${변수명}
10) <c:out> 태그
jsp의 표현식처럼 변수를 출력할 때 사용
<c:out value="출력할 변수" default="기본값" escapeXml="특수문자처리유무 />"
출력할 변수가 null일 때 default 속성에 지정한 기본값이 출력
escapeXml true로 지정하면 html 태그를 자유롭게 사용 가능
11) <c:catch> 태그
발생할 예외를 잡아 처리하는 역할
예외가 발생하면 지정된 변수에 에럽 메시지가 저장되어 전달됨
<c:catch var="변수명">
실행코드
</c:catch>