JSTL
JSTL
JSTL
- JSP Standard Tag Library
- 모델2 방식의 웹 어플리케이션을 개발할 때 EL과 함께 주로 사용
- EL과 마찬가지로 4가지 영역에 저장된 속성값을 사용 가능
JSTL 제공 태그 종류
| 종류 | 기능 | 접두어 | URI |
|---|---|---|---|
| Core 태그 | 변수 선언, 조건문/반복문, URL처리 | c | jakarta.tags.core |
| Formatting 태그 | 숫자, 날짜, 시간 포맷 지정 | fmt | jakarta.tags.fmt |
| XML 태그 | XML 파싱 | x | jakarta.tags.xml |
| Function 태그 | 컬렉션, 문자열 처리 | fn | jakarta.tags.functions |
| SQL 태그 | 데이터베이스 연결 및 쿼리 실행 | sql | jakarta.tags.sql |
Core 태그
| 태그명 | 기능 |
|---|---|
| set | EL에서 사용할 변수를 설정 setAttribute() 메서드와 동일한 기능 |
| remove | 설정한 변수를 제거 removeAttribute() 메서드와 동일한 기능 |
| if | 단일 조건문을 주로 처리 else문이 없다는 단점 |
| choose | 다중 조건을 처리할 때 사용 하위에 when-otherwise 태그 존재 |
| forEach | 반복문을 처리할 때 사용 일반 for문과 향상된 for문 두 가지 형태로 사용 가능 |
| forTokens | 구분자로 분리된 각각의 토큰을 처리할 때 사용 StringTokenizer 클래스와 동일한 기능 |
| import | 외부 페이지를 삽입할 때 사용 |
| redirect | 지정한 경로로 이동 sendRedirect() 메서드와 동일한 기능 |
| url | 경로를 설정할 때 사용 |
| out | 내용을 출력할 때 사용 |
| catch | 예외 처리에 사용 |
<c:set>태그
- EL에서 사용할 변수나 자바빈즈를 생성할 때 사용
1
2
3
4
5
6
7
8
9
10
<c:
set var = "변수명"
value="값"scope="영역"/>
<c:
set var = "변수명"
scope="영역">
value 속성에
들어갈 값
</c:set>
| 속성명 | 기능 |
|---|---|
| var | 변수명을 설정 |
| value | 변수에 할당할 값 |
| scope | 변수를 생성할 영역에 지정, page가 기본값 |
| target | 자바빈즈를 설정 |
| property | 자바빈즈의 속성, 즉 멤버 변수의 값을 지정 |
자바빈즈나 컬렉션을 생성할 때는 target과 property속성을 사용
1
2
3
4
5
6
<c:
set var = "변수명"
value="저장할 객체 혹은 컬렉션"scope="영역"/>
<c:
set target = "var로 설정한 변수명"
property="객체의 속성명"value="속성값"/>
<c:remove>태그
1
2
3
<c:
remove var = "변수명"
scope="영역"/>
| 속성명 | 기능 |
|---|---|
| var | 삭제할 변수명을 설정 |
| scope | 삭제할 변수의 영역을 지정 지정하지 않으면 모든 영역의 변수가 삭제 |
<c:if> 태그
1
2
3
4
5
<c:if test="조건"var="변수명"scope="영역">
조건이 true일
때 출력할
문장
</c:if>
| 속성명 | 기능 |
|---|---|
| test | if문에서 사용할 조건을 지정 |
| var | 조건의 결과를 저장할 변수명을 지정 |
| scope | 변수가 저장될 영역을 지정 |
<c:forEach> 태그
1
2
3
4
5
6
7
8
9
// 일반 for문 형태
<c:
forEach var = "변수명"
begin="시작값"end="마지막 값"step="증가값"/>
// 향상된 for문 형태
<c:
forEach var = "변수명"
items="컬렉션 혹은 배열"/>
| 속성명 | 기능 |
|---|---|
| var | 변수명을 지정 |
| items | 반복을 위한 객체를 지정 배열, 컬렉션 등을 지정할 수 있음 |
| begin | 시작값을 지정 |
| end | 종료값을 지정 |
| step | 증가할 값을 지정 |
| varStatus | 루프의 현재 상태를 알려주는 변수의 이름을 지정 |
varStatus 속성을 통해 얻을 수 있는 정보
| 속성명 | 일반 for문 | 향상된 for문 |
|---|---|---|
| current | var에 지정한 현재 루프의 변숫값 반환 | 현재 루프의 실제 요소를 반환 |
| index | var에 지정한 현재 루프의 변숫값 반환 | 현재 루프의 인덱스를 표시(0-마지막) |
| count | 실제 반복 횟수(1-마지막) | 좌 동 |
| first | 루프의 처음일 때 true 반환 | 좌 동 |
| last | 루프의 마지막일 때 true 반환 | 좌 동 |
국제화(Formatting) 태그
- 국가별로 다양한 언어, 날짜, 시간, 숫자 형식을 설정할 때 사용
1
<%@ <%@taglib prefix="fmt"uri="jakarta.tags.fmt"%>
| 분류 | 태그명 | 기능 |
|---|---|---|
| 숫자 포맷 | formatNumber | 숫자 포맷을 설정 |
| parseNumber | 문자열을 숫자 포맷으로 변환 | |
| 날짜 포맷 | formatDate | 날짜나 시간의 포맷을 설정 |
| parseDate | 문자열을 날짜 포맷으로 변환 | |
| 타임존 설정 | setTimeZone | 시간대 설정 정보를 변수에 저장 |
| timeZone | 시간대를 설정 | |
| 로케일 설정 | setLocale | 통화 기호나 시간대를 설정한 지역에 맞게 표시 |
| requestEncoding | 요청 매개변수의 문자셋을 설정 |
숫자 포맷팅 및파싱
1
2
3
4
<fmt:
formatNumber value = "출력할 숫자"
type="문자열 양식 패턴"var="변수 설정"
groupingUsed="구분 기호 사용 여부"pattern="숫자 패턴"scope="영역"/>
| 속성명 | 기능 |
|---|---|
| value | 출력할 숫자를 설정 |
| type | 출력 양식을 설정 –> percent, currency, number 등을 지원 |
| var | 출력할 숫자를 변수에 저장. 해당 속성 사용 시 즉시 출력되지 않고, 원하는 위치에 출력 가능 |
| groupingUsed | 세 자리마다 콤마를 출력할지 여부 결정. 기본값 true |
| pattern | 출력할 숫자의 양식을 패턴으로 지정 |
| scope | 변수를 저장할 영역을 지정 |
1
2
3
4
<fmt:
parseNumber value = "파싱할 문자열"
type="출력 양식"var="변수 설정"
integerOnly="정수만 파싱"pattern="패턴"scope="영역"/>
| 속성명 | 기능 |
|---|---|
| value | 변환할 문자열을 설정 |
| type | 문자열의 타입을 설정. 기본값 number |
| var | 출력할 값을 변수에 저장 |
| pattern | 문자열의 양식을 패턴으로 지정 |
| scope | 변수를 저장할 영역을 지정 |
| integerOnly | 정수 부분만 표시할지 여부를 결정. 기본값 false |
날짜 포맷 및 타임존
1
2
3
4
<fmt:
formatDate value = "출력할 날짜"
type="출력 양식"var="변수 설정"
dateStyle="날짜 스타일"timeStyle="시간 스타일"pattern="날짜 패턴"scope="영역"/>
| 속성명 | 기능 |
|---|---|
| value | 출력할 값을 설정 |
| type | 출력 시 date, time, both 세가지 중 선택 |
| var | 출력할 숫자를 변수에 저장 |
| dateStyle | 날짜 스타일 default, short, medium, long, full 중 선택 |
| timeStyle | 시간 스타일 default, short, medium, long, full 중 선택 |
| pattern | 출력할 날짜 및 시간의 양식을 패턴으로 직접 지정 |
| scope | 변수를 저장할 영역을 지정 |
이 기사는 저작권자의 CC BY-NC 4.0 라이센스를 따릅니다.