앞 전 시간에는 JSTL을 사용하기 위해 jar파일을 설치하는 방법과 라이브러리에 적용하는 방법을 알아보았다.
https://myvelop.tistory.com/20?category=906898 (JSTL 사용하는법)
오늘은 JSTL 태그에 대해서 자세히 설명하도록 하겠다.
1. JSTL Documentation
https://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/
위 사이트에 JSTL 태그에 대한 모든 사항이 나와있으니 참고하면 좋을 듯 싶다.
2. EL(Expression Language) 사용
JSTL에서는 표현식도 제공해주는데 원래 JSP에서 표현식은 <%= %> 형식으로 표현되었다.
JSTL을 이용하면 아래와 같은 형식으로 사용할 수 있다.
${param.변수}
표현식을 잘 모르겠다면 예전에 포스트했던 https://myvelop.tistory.com/3?category=906898 을 확인하면 좋을 듯하다.
3. JSTL의 종류
태그의 종류 | 태그 모양 | 태그 호출(선언문) |
JSTL core | <c:~></c:~> | <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> |
JSTL functions | ${fn:~} | <%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> |
JSTL fmt | <fmt:~></fmt:~> | <%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> |
JSTL XML | <sql:~></sql:~> | <%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %> |
JSTL sql | <x:~></x:~> | <%@ taglib uri="http://java.sun.com/jsp/jstl/xml" prefix="x" %> |
내가 생각하기에 주로 사용하는 태그는 위의 3개 태그인 core, functions, fmt(I18N) 이다.
4. Core 태그
(core태그를 사용하기 전 <%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %> 선언을 해야한다.)
태그마다 각각 필요한 속성값도 다르고 복잡한 편이기 때문에
<fn:>태그에 비해 사용하기는 어려운 편인 것 같다.
많이 사용하는 core태그만 살펴보도록 하겠다.
- forEach 태그
<c:forEach var="변수" items="아이템" begin="시작값" end="끝값">
${변수}
</c:forEach>
- 자바의 for문과 비슷하다.
- if 태그
<c:if test="EL비교식">
<c:out value="참이다">
</c:if>
** EL비교식은 대체로 ${name eq "이름"} / ${not 클래스.불리언반환}형식이다.
- 자바의 if문과 같다.
- set 태그
<c:set var="변수" value="값" scope="영역/>
- 변수를 설정하는 태그이다.
5. functions 태그
(<%@ taglib uri="http://java.sun.com/jsp/jstl/functions" prefix="fn" %> 선언 필요)
core에 비해 사용법은 간단하다.
그냥 자바의 내장함수를 사용한다고 생각하면 될 것 같다.
마찬가지로 많이 사용하는 fn태그 몇 가지만 살펴보도록 하겠다.
- contains()
${fn:contains("A문자열", "B문자열")}
${fn:containsIgnoreCase("A문자열", "B문자열")}
- A문자열에 B문자열이 포함되어 있는지를 불리언 값으로 리턴한다.
- contains()는 대소문자를 구분하고, containsIgnoreCase()는 구분하지 않는다.
- split()
${fn:split("문자열", "구분자")}
- 구분자를 기준으로 문자열을 잘라 배열로 리턴한다.
- toLowerCase() & toUpperCase()
${fn:toLowerCase("문자열")}
${fn:toUpperCase("문자열")}
- toLowerCase() 는 소문자로 변경하여 반환
- toUpperCase() 는 대문자로 변경하여 반환
6. fmt ( I18N ) 태그
(<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %> 선언 필요)
포맷에 관련된 태그로
지역 정보를 입력해 그 지역에 관련된 데이터를 얻거나
시간 정보 등을 획득할 수 있는 태그이다.
- setBundle
<fmt:setBundle basename="패키지디렉토리"/>
- 각각의 정보를 담은 패키지 디렉토리를 만들어야 사용할 수 있다.
- message
<fmt:message key="messageKey"/>
- messageKey를 출력한다.
- 대체로 bundle이나 setBundle과 함께 사용된다.