JSTL(JSP Standard Tag Library)은 커스텀 태그 라이브러리 기술을 이용해서 일반적으로 필요한 기능들을 표준화한 것으로 크게 핵심(CORE), xml, I18N(국제화), 데이터베이스(SQL), 함수(functions) 라이브러리로 구성된다.
커스텀 태그 기반이므로 JSTL을 사용하는 방법은 일반적인 커스텀 태그와 같다.
사용시 라이브러리 파일을 다운받아야 되고,
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
을 적어줘야한다.
필요한 jstl태그는 prefix와 uri만 바꿔주면 된다.
태그 종류
(1) Core (prefix : c)
→ 일반 프로그래밍에서 제공하는 것과 유사한 변수선언
→ 실행 흐름의 제어 기능을 제공
→ 페이지 이동 기술 제공
URI → http://java.sun.com/jsp/jstl/core
(2) Formatting (prefix : fmt)
→ 숫자, 날짜, 시간을 포매팅하는 기능을 제공
→ 국제화, 다국어 지원 기능 제공
URI → http://java.sun.com/jsp/jstl/fmt
(3) DataBase (prefix : sql)
→ DB의 데이터를 입력 / 수정 / 삭제 / 조회 하는 기능을 제공
URI → http://java.sun.com/jsp/jstl/sql
(4) XML (prefix : x)
→ XML문서를 처리할 때 필요한 기능 제공
URI → http://java.sun.com/jsp/jstl/xml
(5) Function (prefix : fn)
→ 문자열을 제공하는 함수 제공
URI → http://java.sun.com/jsp/jstl/functions
JSTL의 Core Library
1. <C:set>
자바의 int num = 100; 을 <c:set var="num" value="100">으로 바꿔 쓴 코드입니다.
2. <c:out>
역시 자바의 system.out.println(" 안녕하세요 ");을 간단하게 <c:out value=" 안녕하세요 ">로 변경 되었습니다.
이 태그는 특수문자를 그대로 출력합니다.
3. <c:remove>
한 영역의 변수명을 지우는 코드입니다. 만약에 영역을 생략할 경우 모든 영역의 변수가 삭제됩니다.
영역에는 (page → request → session → application) 순서의 영역을 가집니다.
4. <c:if>
자바의 if - else 문과 동일하지만 JSTL에서는 else문이 없습니다.
여기서 scope값을 생략하면 기본으로 page영역이 지정됩니다.
5. <c:choose> / <c:when> / <c:otherwise>
자바의 switch 구문과 if-else 구문을 혼합한 형태로 다수의 조건문을 걸고 싶을때 사용합니다.
<c:choose> <c:when test="${empty list }"> 등록된 글이 없습니다. </c:when> <c:when test="${abc}"> 안녕하세요 </c:when> <c:otherwise> <c:set var="doneLoop" value="false" /> </c:otherwise> </c:choose>
이렇게 <c:choose> 태그안에 <c:when>이 중복되어 사용이 가능하며 boolean값이 True일 경우 블록을 수행합니다.
<c:otherwise>는 <c:when>의 결과 값이 모두 False 일 경우 실행이 됩니다. 그래서 필요한 경우에만 사용됩니다.
6. <c:forEach>
자바에서는 for문으로 불리던게 JSTL에서는 forEach로 변경되었습니다.
배열이나 컬렉션, Map에 저장되어 있는 값들을 순서대로 처리 할때 사용되며,
<c:forEach var=" i " begin=" 1 " end=" 10 " step=" 1 "> ${ i } </c:forEach>로 i가 1부터 10까지 1씩 증가한다는 구문을 쉽게 만들 수 있습니다.
7. <c:forTokens>
자바의 StringTokenizer 를 JSTL를 사용하면 아주 간편하게 사용할 수 있습니다.
<c:forTokens var="abc" items="안녕/하세요/upbreak05블로그/입니다" delims="/" >이렇게 코드를 작성할 수 있습니다.
8. <c:catch>
try{ 자바에서는 여기에 행동 } catch (Exception err){ 에러내용 표시 } <c:catch var= "abc "> JSTL에서는 여기에 행동 </c:catch> 태그 밖에 ${abc}를 사용하여 에러내용
자바의 Try-catch 구문과 같죠. 단 <c:catch>태그는 에러내용을 ${abc}로 빼내서 처리해줘야 합니다.
9. <c:redirect>
는 아래와 같이 파라미터 값을 지정된 url로 보냅니다.
<c:redirect url="baordList.jsp"> <c:param name="abc" value="안녕하세요" /> </c:redirect>
10. <c:import>
는 <jsp:include>와 비슷합니다.
11. <c: url>
은 <c:set>과 비슷하며 GET방식으로 파라미터를 전달합니다.
이 외에
<a href="Detail?searchId=${jarr[i].ID}&sessionId=${sessionId}"> ${jarr[i].MAIN_TITLE}</a> |
@RequestMapping(value = "/Detail") public String detailPage(HttpServletRequest request, Model model, HttpSession session) throws Exception { String ID = request.getParameter("searchId"); sessionIdID = request.getParameter("sessionId"); return "selected"; } |
이렇게도 get으로 넘길수도 있다.
********************************
${!empty str ? true : false} |
EL을 이용하여 삼항 연산자를 사용할 수 있다.
이를 이용하여 <c:if>에서 사용하여
<c:if test="${empty searchKeyword ? true : false}"> 검색어가 없습니다. </c:if> <c:if test="${!empty searchKeyword ? true : false}"> 검색어는 ${searchKeyword}입니다. </c:if> |
이렇게 사용할 수도 있다.
문자열 자르기 Function 태그의 Fn:substring을 이용하면 문자열을 자를 수 있다.
<c:out value="${fn:substring(stripText,0,200)}" |
[출처] JSTL(Jsp Standard Tag Library) - Core, C 태그|작성자 upbreak05
'JAVA HTML JAVASCRIPT > 소오스' 카테고리의 다른 글
spring - Maven 을 이용한 프로젝트 생성 및 활용(1) (0) | 2020.02.26 |
---|---|
[Java] Tag라이브러리(JSTL) 사용하기 (0) | 2020.02.25 |
<c:if> (0) | 2020.02.24 |
forEach() (0) | 2020.02.24 |
eclipse 초기 설정 (0) | 2020.02.07 |