2. JSTL은 무엇인가?
자바 코드에 익숙하지 않은
개발자들도 Custom tag를 통해 jsp 개발을 할 수 있다.
Custom tag 중 널리 쓰이는 것을 모아
심사를 거쳐 표준으로 만든 라이브러리 모음이다.
코드의 가독성, 재사용성이 향상되어 널리 쓰이고 있다.
3. JSTL을 가지고 하는 일
태그종류 prefix 설명 URI
Core c 변수선언 / 출력 / 조건식 등 실행흐름제어
http://java.sun.com/
jsp/jstl/core
Formatting fmt 숫자, 날짜, 시간을 포메팅 함
http://java.sun.com/
jsp/jstl/fmt
Database sql DB의 데이터 CRUD기능을 제공
http://java.sun.com/j
sp/jstl/sql
XML x Xml문서 처리
http://java.sun.com/j
sp/jstl/xml
Function fn 문자열에 제공하는 함수, EL(Expression Language)에서 사용
http://java.sun.com/j
sp/jstl/functions
6. 1.Core tag(1)
<c:out>
데이터를 출력할 때 사용
<c:out value="값" escapeXml="boolean"/>
<c:set>
변수를 설정 할 때 사용
<c:set var="변수명" value="값" [scope="영역"] />
set을 통해 객체 멤버 변수 값을 설정 할 수도 음
<c:set target="대상" property=“이름" value="값" />
<c:remove>
set태그로 지정 된 변수를 삭제할 때 사용
<c:remove var="var명" scope="영역" />
<c:catch>
예외메세지를 잡을 때 사용한다.
<c:catch var="변수명">
7. 1.Core tag(2)
<c:if>
조건에 따른 행동을 수행함
<c:if test="조건"> . . . </c:if>
<c:choose>/<c:when>/<c:otherwise>
Switch/if-else 문을 합쳐 놓은 형태
Test>조건
<c:url>
<c:url value="URL" var="변수명", scope="영역">
<c:params>
url에 parameter를 추가해 줄 수 있다.
<c:param name="이름", value="값">
<c:redirect>
지정한 페이지로 redirect해주는 기능을 합니다.
<c:redirect url="URL">
8. 1.Core tag(3)
<c:import>
특정 url결과를 읽어와 현재 위치에 삽입하거나 외부의 자원을 불러올때 사용
<c:import url="URL" var="변수명" scope="영역" charEncoding="캐릭터셋">
<c:foreach>
for,while문과 같은 반복문
<c:forEach var="변수" items="아이템" begin="시작값" end="끝값" step="증가값">
<c:forTokens>
Item속성으로 넘겨받은 문자열을 delims구분자를 통해 나눠준다.
<c:forTokens var="token" items="문자열" delims="구분자">
9. 2.Function tag(1)(EL에서 사용)
${fn:length(~)}
:길이를 반환해준다.
${fn:toUpperCase(~)}
${fn:toLowerCase(~)}
:각각 대소문자로 바꿔준다.
${fn:substring(str1,3,10)}
:str1문자열에서 3~10번째 문자열을 빼서 출력하시오
${fn:substringAfter(str1,str2)}
:str1에서 str2가 나온 이후의 문자열을 출력하시오
${fn:substringbefore(str1,str2)}
:str1에서 str2가 들어간 이전 문자열을 출력하시오
${fn:replace(str1,”a”,”b”)}
:str1에서 a를 b로 바꿔준다.
10. 2.Function tag(2)(EL에서 사용)
${fn:indexOf(str1,str2)}
:str1에서 str2가 포함된 곳의 인덱스를 출력함
${fn:startsWith (str1,”aa”)}
:str1문자열에서 my로 시작 하는가를 boolean으로 알려줌
${fn:endsWith(str1,”aa”)}
:str1이 aa로 끝나는지를 boolean으로 알려줌
${fn:contains(str1,str2)}
:str1에 str2가 포함되는지를 알려줌
${fn:containsIgnoreCase(str1,str2)}
:대소문자 관계없이 str1에 str2가 포함되어 있는지 알려줌
${fn:split (array,’-’)}
:array를 –를 붙여 하나의 문자열로 만들어준다.
11. 3.Database tag
<sql:setDataSource>
:data source를 지정한다.
<sql:setDataSource
{dataSource="dataSource" | url ="jdbc Url“}
driver=“드라이버 클래스명"
user=“DB사용자계정“
password=“DB사용자비밀번호“
var=“Datasource 스펙저장"
scope="{page|request|session|application}"/>
<sql:query>
:query문을 사용할 수 있게 된다. 주로 결과set을 얻을 때 사용
<sql:query sql=“sqlQuery”
var="쿼리 결과 저장"
scope="{page|request|session|application}"
dataSource="dataSource"
maxRows="쿼리결과 포함 최대 행 수 “
startRow="시작 행" />
<sql:dataParam> / <sql:param>
:파라미터를 넘기는 방식은 날짜, 문자열이 있는데 날짜일때
dataParam, 문자열 일때 param을 쓴다.
<sql:dateParam value="value"type="{timestamp|time|date}"/>
<sql:param value="value"/>
<sql:update>
: query를 사용. 주로 적용된 행을 얻을 때 사용
<sql:update sql="sqlUpdate"
dataSource="dataSource"
var="varName"
scope="{page|request|session|application}"/>
12. 4.XML tag
<x:out>
Xpath의 값을 출력을 합니다.
<x:out select="<string>" escapeXml="<true|false>"/>
<x:if>
Xpath의 조건이 맞으면 해당 행동을 합니다.
<x:if select="XPathExpression" var="varName"[scope="{page|request|session|application}"]/>
<x:set>
Scope의 변수에 Xpath의 값을 저장시킴
<x:set var="<string>" select="<string>" scope="<string>"/>
<x:choose> / <x:when> / <x:otherwise>
Xml tag의 if-else 구문, 조건이 맞을 경우 수행
<x:when select="<string>">
<x:otherwise>
<x:choose>
<x:forEach>
반복문을 돌며 작업을 수행합니다.
<x:forEach
var="<string>"
select="<string>"
begin="<int>"
end="<int>"
step="<int>"
varStatus="<string>">
<x:parse>
xml file을 읽어 해당되는 tag로 파싱 시킨다.
<x:parse
var="<string>"
varDom="<string>"
scope="<string>"
scopeDom="<string>"
doc="<string>"
systemId="<string>"
filter="<string>"/>
13. 5.Formatting tag(1)
<fmt:requestEncoding>
요청파라미터에 맞게 캐릭터 인코딩을 지정한다.
<fmt:requestEncoding value="캐릭터셋" />
<fmt:message>
저장한 리소스 번들로 부터 메시지를 읽어와 실행한다
<fmt:bundle basename="번들명"><fmt:message key="키명">
<fmt:setLocale>
국제화 태그들이 사용할 로케일을 지정함
<fmt:setLocale value="언어코드_국가코드" scope="영역" />
<fmt:setBundle>
리소스 번들을 변수로 저장한 후 어디서든지 사용할 수 있게 됨
<fmt:setBundle var="변수명" basename="리소스번들명" />
<fmt:bundle>
사용할 메시지 번들을 지정한다.
<fmt:bundle basename="리소스번들명"> <fmt:message key="키명“>
15. 5.Formatting tag(3)
<fmt:formatDate>
날짜정보를 담고 있는 객체를 포매팅하여 출력한다.
<fmt:formatDate value="날짜값" type="타입" dateStyle="날짜스타일"
timeStyle="시간스타일" pattern="패턴" timeZone="타임존"
var="변수명" scope="영역" />
dateStyle>time / date
timeStyle>default / short / medium / long / full
<fmt:parseDate>
문자열로 된 날짜 / 시간 값을 java.util.Date()로 파싱한다.
<fmt:formatDate value="날짜값" type="타입" dateStyle="날짜스타일" timeStyle="시간스타
일" pattern="패턴" timeZone="타임존" parseLocale="로케일" var="변수명" scope="영역" />
<fmt:timeZone>
문자열로 된 날짜 / 시간 값을
java.util.Date()로 파싱한다.
<fmt:timeZone value=“이름">
<fmt:formatDate .. />
<fmt:setTimeZone>
액션태그가 실행된 뒤 이후의 모든
코드에 영향을 미친다.
<fmt:setTimeZone value="타임존명">
<fmt:formatDate . . . />