커스텀태그 |
설명 |
core(기본 기능) |
일반 프로그램이 언어에서 제공하는 것과 유사한 변수 선언, 실행 흐름의 제어 기능을 제공 다른 JSP페이지로 제어를 이동하는 기능 제공 |
format(형식화) |
숫자, 날짜, 시간을 formatting하는 기능과 국제화, 다국어 지원 기능을 제공 |
sql(데이터 베이스) |
데이터베이스의 데이터를 입력/수정/삭제/조회하는 기능을 제공 |
xml(XML처리) |
XML문서를 처리할 때 필요한 기능을 제공 |
functions(함수처리) |
문자열을 처리하는 함수를 제공 |
core태그의 종류
태그 |
설명 |
<c:set> |
변수에 값을 설정 |
<c:remove> |
변수에 설정된 값을 제거 |
<c:if> |
조건에 따라 처리를 달리 할 때 사용됨 |
<c:choose> |
여러조건에 따라 처리를 달리 할 때 사용됨 |
<c:forEach> |
반복 처리를 위해서 사용됨 |
<c:forTokens> |
구분자로 분리된 각각의 토큰을 처리할 때 사용됨 |
<c:import> |
외부의 자원을 url을 지정하여 가져다 사용함 |
<c:redirect> |
지정한 경로로 이동함 |
<c:url> |
url을 재작성 |
<c:out> |
데이터를 출력할 때 사용하는 태그 표현식인 <%= %>을 대체할 수 있다. |
<c:catch> |
예외 처리에 사용 |
▶<c:set>
변수에 값, 속성, 영역을 지정. setAttribute와 같은 역할.
<c:set var="msg" value="Hello" scope="page"/>
/**var = 변수명을 String으로 지정
value = 변수에 저장할 값을 지정.
scope = 변수가 효력을 발휘할 영역. (생략할 경우 page영역에 자동으로 변수가 저장)**/
<c:set var="변수이름" [scope="{page|request|session|application}"]>
저장할 값
</c:set>
▶<c:remove>
변수에 설정된 값을 제거. JSP의 removeAttribute()와 같은역할.
<c:remove var="변수 이름" [scope="{page|request|session|application}"]>
//ex.
<c:remove var="age">
//page scope에 있는(생략되어있으면 기본 영역이 page) age변수를 제거.
▶<c:if>
일반 자바에서 if문의 기능과 동일. 그렇지만 else기능은 없음.
<c:if test="조건식">
true일경우 실행문장
</c:if>
▶<c:choose>
<c:if>에서 else를 사용할 수 없었던 문제를 해소할 수 있다. <c:when>, <c:otherwise>와 함께 쓰인다.
자바의 switch문처럼 여러경우에 대해서 처리 가능.
<c:choose>
<c:when test="${param.userType == 'admin'}">
${param.id} //admin
</c:when>
<c:otherwise> //else와 같은 의미
${param.id} //user
</c:otherwise>
</c:choose>
<c:choose>
<c:when test="조건1">
body1
</c:when>
<c:when test="조건2">
body2
</c:when>
<c:otherwise> //else와 같은 의미
body3
</c:otherwise>
</c:choose>
▶<c:forEach>
배열이나 collection 또는 Map 등과 같은 집합체에 저장되어있는 값들을 순차적으로 처리할 때 사용할 수 있는 태그
<c:forEach [var="변수 이름"] items="배열">
body
</c:forEach>
//ex.
<c:forEach var="bookdt" items="${bookDetail}">
<tr>
<td>${bookdt.bookNo}</td>
<td>${bookdy.bookTitle}</td>
</tr>
</c:forEach>
▶<c:forTokens>
java문에서 java.util.StringTokenizer와 비슷한 역할. 문자열을 구분자로 분리해서 하나씩 추출.
<c:forTokens var="토큰을 저장할 변수" items="토큰으로 나눌 문자열" delims="구분자">
body
</c:forTokens>
//ex.
<c:forTokens item="서울.인천, 대구.부산" delims="," var="city">
${city}<br>
</c:forTokens>
<c:forTokens items="서울.인천, 대구.부산" delims=",." var="city">
${city}<br>
</c:forTokens>
/*결과값
서울.인천
대구.부산
서울
인천
대구
부산*/
▶<c:import>
다른 페이지의 내용을 포함시키기 위해서 사용. <jsp:include> 태그는 단순히 페이지를 포함 시키지만
<c:import> 태그는 다른페이지의 내용을 변수에 저장할 수 있다.
<c:import url="URL" [var="변수 이름"][scope="영역"][charEncoding="charEncoding"]>
</c:import>
//ex.
//main.jsp
<c:import url="../sub.jsp" var="data"></c:import>
${data}
</body>
//sub.jsp
<body>
정수형:${10}<br>
실수형:${5.6}<br>
문자열형:${"안녕"}<br>
논리형:${true}<br>
null:${null}<br>
</body>
//결과
정수형:10
실수형:5.6
문자열형:안녕
논리형:true
null:
▶<c:url>
이후에 여러번 반복되어 사용할 주소가 있다면 변수에 저장하기 위해서 사용된다.
<c:url value="URL" [var="변수 이름"][scope="영역"]>
</c:url>
//ex.
<c:url value="../img/2.jpg" var="data"></c:url>
<h3>${data}</h3>
<img src="${data}" width="200" height="200">
▶<c:redirect>
response.sendRedirect() 메소드와 동일한 기능 제공
<c:redirect url="URL" [context="경로명"]>
//ex.
<c:redirect url="main.jsp"></c:redirect>
▶<c:out>
value 속성에 지정한 문자열 혹은 변수의 내용을 출력할 때 사용하는 태그
JSP의 표현식(<%= %>) 표현언어 EL(${})
<c:out>의 속성
속성 |
설명 |
value |
출력할 값을 지정 |
default |
지정한 값이 없을 경우 사용할 값을 지정함. |
<c:out value="value" [default="기본값"]/> //default는 생략 가능
<c:out value="value">
기본값
</c:out>
//ex.
<c:out value="${age}" default="10"/>
//변수 age가 없거나 저장된 값이 없을때에는 default속성값인 10을 출력
<c:out value="${age}">
10
</c:out>
▶<c:catch>
자바에서의 try-catch 역할.
<c:catch var="변수 이름">
예외가 발생할 수 있는 코드
</c:catch>
//ex.
<c:catch var="errmsg">
예외 발생 전
<%= 1/0 %>
예외 발생 후
</c:catch>
기능 |
prefix |
기본 URI |
기본 기능 |
c |
|
형식화 |
fmt |
|
데이터베이스 작업 |
sql |
|
XML 처리 |
x |
|
함수처리 |
fn |
http://java.sun.com/jsp/jstl/functions or |
fmt태그의 종류
기능 |
태그 |
설명 |
숫자 날짜 형식 |
formatnumber |
숫자를 양식에 맞춰서 출력 |
formatDate |
날짜 정보를 담고 있는 객체를 포맷팅하여 출력할 때 사용 |
|
parseDate |
문자열을 날짜로 파싱 |
|
parseNumber |
문자열을 수치로 파싱 |
|
setTimeZone |
시간대별로 시간을 처리할 수 있는 기능을 제공 |
|
timeZone |
시간대별로 시간을 처리할 수 있는 기능을 제공 |
|
로케일지정 |
setLocale |
국제화 태그들이 사용할 로케일을 지정 |
requestEncoding |
요청 파라미터의 인코딩을 지정 |
|
메시지 처리 |
bundle |
태그 몸체에서 사용할 리소스 번들을 지정 |
message(param) |
메시지를 출력 |
|
setBundle |
특정 리소스 번들을 사용할 수 있도록 로딩 |
▶ <fmt:formatNumber>
value속성에 지정한 수치 데이터를 출력할 때 단위를 구분하기 위해 사용되는 콤마를 세자리마다 한번씩 찍어준다.
<fmt:formatNumber value="수치 데이터"
[type="{number|currency|percent}"]
[pattern="패턴"]
[currencySymbol="화폐 단위"]
[groupingUsed="{true|false}"]
[var="변수 이름"]
[scope="{page|request|session|application}"]>
속성 |
표현식 |
타입 |
설명 |
value |
true |
String or Number |
형식화할 수치 데이터 |
type |
true |
String |
숫자(Number), 통화(currency), 퍼센트 중 어느 형식으로 표시할 지 지정 |
pattern |
true |
String |
사용자가 지정한 형식 패턴 |
currencySymbol |
true |
String |
통화기호, 통화형식(type=”currency”)일 때만 적용 |
groupingUsed |
true |
boolean |
콤마와 같이 단위를 구분할 때 사용하는 기호를 표시할 지 여부를 결정. true면 10,000과 같이 구분 기호가 사용되며, false면 10000형식으로 출력 |
var |
false |
String |
형식 출력 결과 문자열을 담는 scope에 해당하는 변수 이름 |
scope |
false |
String |
var 속성에 지정한 변수가 효력을 발휘할 수 있는 영역 지정 |
▶<fmt:formatDate>
날짜를 2020.08.22와 같은 형태로 출력하고자 할 경우 사용.
value속성에 date를 넣어서 처리하기 위해서는 java.util.Date 클래스로 객체를 생성하는것이 필수적.
-선행조건
<c:set var="now" value="<%=new java.util.Date()%>"/>
<fmt:formatDate value="date"
[type="{time|date|both}"]
[dateStyle="{default|short|medium|long|full}"]
[timeStyle="{default|short|medium|long|full}"]
[pattern="customPattern"]
[timeZone="timeZone"]
[var="변수 이름"]
[scope="{page|request|session|application}"]>
속성 |
표현식 |
타입 |
설명 |
value |
true |
java.util.Date |
형식화될 Date와 time |
type |
true |
String |
형식화할 데이터 타입 셋 중 하나를 지정. time, date, both |
dateStyle |
true |
String |
미리 정의된 날짜 형식으로 default | short | medium | long | full중 하나 지정 |
timeStyle |
true |
String |
미리 정의된 날짜 형식으로 default | short | medium | long | full중 하나 지정 |
pattern |
true |
String |
사용자 지정 형식 스타일 |
timeZone |
true |
String 또는 java.util.Date |
형식화 시간에 나타날 타임존 |
var |
false |
String |
형식 출력 결과 문자열을 담는 scope에 해당하는 변수 이름 |
scope |
false |
String |
var 속성에 지정한 변수가 효력을 발휘할 수 있는 영역 지정 |
▶<fmt:setTimeZone>
특정 지역의 타임존을 설정하는 태그.
<fmt:setTimeZone value="timeZone"
[var="변수 이름"]
[scope="{page|request|session|application}"]>
▶<fmt:timeZone>
타임존을 부분 적용하는 태그.
<fmt:timeZone value="timeZone">
body
</fmt:timeZone>
▶<fmt:setLocale>
다국어 페이지를 만들 때 통화와 날짜의 형식을 변경할 때 쓰임
<fmt:setLocale value="locale"></fmt:setLocale>
▶<fmt:requestEncoding>
post방식으로 넘어오는 페이지에서 한글 데이터가 깨지지 않도록 하는 역할을 함.
request.setCharacterEncoding("UTF-8") 메소드와 동일.
<fmt:requestEncoding value="charsetName"></fmt:setLocale>
출처:
sql태그의 종류
Name |
Required |
Request-time |
Type |
Desc |
var |
false |
false |
java.lang.String |
변수에 DataSource 스펙 저장 |
scope |
false |
false |
java.lang.String |
변수 공유 범위 |
dataSource |
false |
true |
java.lang.String |
컨텍스트에 JNDI 설정 시 Resource Name |
driver |
false |
true |
java.lang.String |
드라이버 클래스 명 |
url |
false |
true |
java.lang.String |
JDBC URL |
user |
false |
true |
java.lang.String |
DB 사용자 계정 |
password |
false |
true |
java.lang.String |
DB 사용자 패스워드 |