태그 라이브러리 선언
자바에서 import문을 선언하듯 JSP에서도 JSTL 확장 태그를 사용하려면 taglib 지시자로 라이브러리를 선언해야 한다.
JSP 지시자 태그 <%@ taglib %>를 사용해서 다음과 같이 선언한다.
<%@ taglib prefix="접두사" uri="URI" %>
uri : 태그 라이브러리의 네임 스페이스 URI 식별자
prefix : JSTL 태그를 사용할때 태그 이름 앞에 붙일 접두사
다음은 태그 라이브러리 별 표준 선언문이다.
태그 라이브러리 | 선언문 |
Core | <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> |
XML | <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %> |
I18N | <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %> |
Database | <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %> |
Functions | <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %> |
prefix를 꼭 저렇게 지정해야하는건 아니지만 JSTL에서 제안하는 표준 접두사이므로 똑같이 사용하는 게 좋다.
태그 라이브러리 별 태그 정리
태그 라이브러리 | 기능 | 태그 - 부모태그(자식태그) |
Core(기본) | 변수 | remove, set |
흐름 제어 | choose(when, otherwise) forEach forTokens if |
|
URL 관리 | import(param) redirect(param) url(param) |
|
기타 | catch, out | |
XML | 기본 | out, parse, set |
흐름 제어 | choose(when, otherwise) forEach if |
|
변환 | transform(param) | |
I18N(국제화) | 로케일 | setLocale, requestEncoding |
메시지 포맷 | bundle message(param) setBundle |
|
Database | 데이터 소스 설정 | setDataSource |
SQL | query(dateParam, param) transaction update(dateParam, param) |
|
Functions(기타 함수) | 집합의 원소 개수 | length |
문자열 처리 | toUpperCase toLowerCase substring substringAfter substringBefore trim replace indexOf startsWith endsWith contains containsIgnoreCase split join escapeXml |
<c:out> 태그
출력문을 만드는 태그이다.
<c:out value="출력값" default="기본값" />
<c:out value="출력값">기본값</c:out>
value에 EL 표현식을 쓸 수 있다.
value 값이 null이면 기본값이 출력되고 기본값이 없으면 빈 문자열이 출력된다.
예) <c:out value="테스트" />
<c:set> 태그
변수를 다룰 때 사용한다.
이 태그로 생성한 변수는 JSP의 로컬 변수가 아니라 서블릿 보관소(JspContext, ServletRequest, HttpSession, ServletContext)에 저장된다.
<c:set var="변수명" value="값" scope="page(기본값)|request|session|application" />
<c:set var="변수명" scope="page(기본값)|request|session|application">값</c:set>
scope의 기본값은 page이다. 따라서 scope를 생략하면 JspContext에 저장된다.
scope를 생략하면 기본적으로 JspContext(page)에 저장됨을 알 수 있다.
scope="request"와 같이 scope를 명시적으로 지정할 수도 있다.
<c:set>으로 이미 존재하는 변수에 값을 할당할 경우 기존 값을 덮어쓴다.
<c:set>을 이용한 객체의 프로퍼티 값 설정
<c:set target="대상 객체" property="설정할 프로퍼티" value="프로퍼티 값" />
Innter class MyMember의 인스턴스 member를 생성하고 member의 name을 <c:set> 태그를 사용해서 변경하는 코드이다.
<c:set>으로 객체의 프로퍼티 값을 설정할 때는 setter()의 리턴 타입이 반드시 void여야 한다.
그렇지 않으면 500에러가 발생한다.
<c:remove> 태그
보관소에 저장된 값을 제거한다.
<c:remove var="변수명" scope="page(기본값) | request | session | application" />
<c:set>과 마찬가지로 scope 속성으로 보관소를 명시할 수 있고 보관소의 기본값은 page이다.
<c:remove> 사용 후 JspContext에서 username1의 값을 삭제해서 값이 출력되지 않는다.
<c:if> 태그
<c:if test="조건식" var="변수명" scope="page(기본값) | request | session | application">내용</c:if>
test의 조건식이 true이면 '내용'이 실행된다.
var, scope 속성은 test 결과를 저장할 때 사용한다.
<input type="radio" name="searchYN" value= "N" <c:if test="${input.searchYn eq 'N'}"> checked="checked"</c:if> /> 아니요
<c:if> - List가 empty(비어있는지) 체크
List의 empty 여부는 empty operator를 사용하여 test할 수 있다.
<c:if test="${empty myList}">
<div>
<!-- myList가 비어있으면 -->
</div>
</c:if>
<c:if test="${not empty myList}">
<div>
<!-- myList가 비어있지 않으면 -->
</div>
</c:if>
<c:choose> 태그
자바의 switch-case와 같은 기능을 수행한다.
여러 조건에 따라 다른 작업을 할 필요가 있을 때 사용한다.
<c:choose>
<c:when test="조건식"></c:when>
<c:when test="조건식"></c:when>
...
<c:otherwise></c:otherwise >
</c:choose>
<c:when> 태그는 한 개 이상 존재해야 하며 <c:otherwise> 태그는 0개 혹은 1개가 올 수 있다.
<c:when>의 조건에 일치하지 않으면 <c:otherwise>가 실행된다.
<c:forTokens>
문자열을 분리자를 사용해서 분리해서 출력할 수 있습니다.
<c:forTokens var="name" items="A,B,C" delims=",">
<p><c:out value="${name}"/></p>
</c:forTokens>
실행결과:
A
B
C
<c:url> 태그
URL을 만들 때 사용한다.
이 태그를 사용하면 매개변수를 포함한 URL을 쉽게 만들 수 있다.
<c:url var="변수명" value="url">
<c:param name="파라미터명" value="값" />
<c:param name="파라미터명" value="값" />
<c:param name="파라미터명" value="값" />
</c:url>
<c:import> 태그
url 속성에 콘텐츠가 있는 주소를 지정하면 해당 주소로 요청하고 응답 결과를 받아서 반환한다.
<c:import url="url" var="변수명" scope="page(기본값) | request | session | application" />
<c:redirect> 태그
리다이렉트 처리를 할 때 사용한다. 내부적으로 HttpServletResponse의 sendRedirect()를 호출한다.
<c:redirect url="url" />
<fmt:parseDate> 태그
날짜 형식으로 작성된 문자열로 java.util.Date 객체를 생성한다.
그리고 지정된 보관소에 저장한다.
<fmt:parseDate var="변수명" value="날짜 형식 문자열" pattern="패턴" scope="page(기본값) | request | session | application" />
<fmt:formatDate> 태그
날짜 객체로부터 원하는 형식으로 날짜를 표현하고자 할때 사용한다.
<fmt:formatDate value="java.util.Date 객체 지정" pattern="패턴" />
'IT > 자바스크립트' 카테고리의 다른 글
[jQuery] CheckBox 선택된 값 가져오기 (0) | 2023.06.16 |
---|---|
[자바스크립트] C태그 forEach 사용법 (0) | 2023.06.16 |
[JSP] 정규표현식 (ES6) (0) | 2023.06.09 |
[자바 스크립트] ajax callback 함수에서 xml 파싱 (0) | 2023.04.25 |
JSTL 비교연산자(eq, ne, empty, not empty) 사용법 (0) | 2023.04.13 |