New World

[JSP 공부 #7] JSTL 본문

Programming/Languages

[JSP 공부 #7] JSTL

hyeovi 2020. 6. 30. 14:48
728x90
반응형

액션 태그: 이미 정해진 액션/동작들을 위한 태그
ex) <jsp:useBean ...>, <jsp:include ...>

 

커스텀 태그: JSP에서는 프로그래머가 직접 필요한 태그를 만들어 사용
XML 태그 형식, 시작 태그와 종료 태그가 반드시 존재
ex)
몸체가 없는 태그 방식
<prefix:tagName .../>

몸체가 있는 태그 방식
<prefix:tagName ...>
</prefix:tagName ...>


JSTL(java standard tag library/자바 표준 태그 라이브러리)

- 자바에서 커스텀 태그 기능을 이용하여 활용 빈도가 높은 태그를 개발
Core(c): 변수 지원, 제어 흐름, URL 관리, 출력, 예외 처리
XML(x): 코아, 흐름 제어, 변환
Internationalization(fmt): 지역화, 메시지 포맷, 수와 날짜 포맷
Database(sql): SQL
Functions(fn): 집합체 길이, 문자열 처리

taglib지시자

<%@taglib prefix="c" url="http://java.sun.com/jsp/jstl/JSTL 분류 or 접두어"%>

<접두어:out value="값"/>

 

ex)
<%@taglib prefix="c" url="http://java.sun.com/jsp/jstl/core"%>

<c:out value="Hello"/>

 

JSTL 태그 언어 형식의 까다로운 면모

<prefix:tagname attribute=""/>
<c:out value="" escapeXml="" default="" />


코어 태그 라이브러리(Core)

변수 지원: set, remove
ex)
<c:set var="변수 이름" value="저장할 값" scope="4개 중 하나"/>
<c:set var= ...> Scope 별로 변수를 정하여 값을 할당해두는 경우
<c:set target= ...> Map 또는 자바빈즈 객체에 <키, 값> 또는 <property, value> 쌍을 할당해두는 경우(scope 별 지정 안됨)

<c:remove var="변수 이름" scope="삭제할 변수의 scope"/>
- scope 지정이 되어 있는 경우와 그렇지 않은 경우의 행동 방식이 다름
- 속성 var은 무조건 존재
- 지정된 scope에 var에서 지정한 변수가 있으면 그것을 삭제, 없으면 지우지 못함
- 아예 Scope가 지정되어 있지 않은 경우엔 4가지 scope 모두 삭제

제어 흐름: choose, when, otherwise, forEach, forTokens, if
ex)
<c:if test="${today.hours>17}" var="bool">
</c:if>

<c:choose>
<c:when test="${today.hours<18}">
Body1
</c:when>
<c:otherwise>
Body2
</c:otherwise>
</c:choose>

<c:forEach var="한원소를 저장하는 변수" items="배열 또는 Map 등의 집합체">
body
</c:forEach>
- 배열, Collection, Map에 저장된 원소를 순차적으로 처리하거나 지정하는 횟수만큼 반복을 처리하는 태그
ex) 
<c:set var="score" value="<%= new int[] {95, 88, 77, 45, 99} %>" />
<c:forEach var="point" items="${score}" >
${point} = ${point} <br>
<c:set var="sum" value="${sum + point}" />
</c:forEach>

URL 관리: import, param, redirect, url
예외처리, 출력: catch, out


SQL 태그 라이브러리

리소스 지정
setDataSource <sql: setDataSource...> 데이터소스 지정

- server.xml 파일에 리소스 등록하기
- 자바코드 내의 소스 형식과 상이(query, update, transaction 등)

질의

query <sql:query ...> 조회 관련 SQL 문장 실행
dateParam <sql:dateParam ...> 날짜 형태로 SQL의 매개변수 값 지정
param <sql:param ...> SQL의 매개변수 값 지정
Update <sql:update ...> 수정 관련 SQL 문장 실행
transcation <sql:transaction ...> 트랜잭션 처리

 


함수 라이브러리
${fn.functionName()}
- 대부분 문자열 처리 관련 함수들임
- 단, length()는 인자로 문자열 뿐 아니라 일반 컬렉션 객체 사용 가능

반응형
Comments