New World
[JSP 공부 #7] JSTL 본문
액션 태그: 이미 정해진 액션/동작들을 위한 태그
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()는 인자로 문자열 뿐 아니라 일반 컬렉션 객체 사용 가능
'Programming > Languages' 카테고리의 다른 글
[HTML] 로그인 화면 만들기 #1 (0) | 2021.01.23 |
---|---|
[PHP+MySQL+PHPAdmin] 서로 다른 테이블의 속성을 select 하여 json 형식으로 만들기 (0) | 2020.08.08 |
[JSP 공부 #6] 표현 언어(EL) (0) | 2020.06.30 |
[JSP 공부 #5] JDBC 프로그래밍 (0) | 2020.06.30 |
[JSP 공부 #4] 데이터 베이스와 MySQL (0) | 2020.06.30 |