ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • JSTL core tag 사용하기
    JSP 2019. 1. 31. 21:02

    이 글을 보기 전에
    JSTL 라이브러리를 등록하는 법을 모르시는 분은 이 글을 참고하세요
    EL 에 대해 모르시는 분은 이 글을 참고하세요
    코어 태그를 사용하기 위해서는

    <%@ taglib prefix="c" uri="[http://java.sun.com/jsp/jstl/core"](http://java.sun.com/jsp/jstl/core") %>
    를 선언해주어야 한다.

    table, td, th{ border: solid 1px black; border-collapse: collapse; padding: 3px 5px}

    JSTL 코어 태그 의 종류

    태그명 내용
    set 변수를 만들어서 값을 저장하는 태그이다.
    out 페이지에 값을 출력하는 태그이다.
    if 조건문의 if와 비슷하며 test 속성에 조건을 넣어서 비교한다.
    choose switch문과 비슷하며 내부에 <c:when>, <c:otherwise> 태그와 같이 쓰인다.
    forEach for each 문과 비슷하며 반복문을 수행하는 태그이다.
    forTokens StringTokenizer 객체와 비슷하며 token 값을 기준으로 문자열을 분할하는 태그이다.
    url 변수에 url 값과 쿼리스트링 값을 저장하고 호출할 수 있게 하는 태그이다.
    redirect 페이지를 재요청하는 태그이다.

    <c:set> 태그

    변수를 선언하고 나서 그 변수에 초기 값을 대입하는 기능의 태그이다.

    <c:set> 변수 선언 방식

    <c:set var="변수명" value="초기값"/>

    <c:set> 속성

    속성 내용
    var="문자" 값을 저장할 변수명
    value="값" 저장할 값, 값은 표현식, EL도 가능
    target="객체명" 저장할 객체 대상
    property="객체맴버변수명" 저장할 객체의 맴버변수
    scope="범위" 범위(request, session, application)

    scope 속성을 이용하면 page 영역 뿐만 아니라 request, session, application 영역에 속성을 저장하는 것이 가능하다.

    <c:set> 예시와 출력 결과

        <c:set var="c" value="안녕하세요"/>
        ${c }
        <br />
        <c:set var='arr'>
            강아지, 고양이, 오리, 토끼
        </c:set>
        ${arr }

    <c:remove> 태그

    <c:set> 을 이용해서 선언한 변수를 삭제할 때 사용한다.

    <c:remove> 사용법

    <c:remove var="변수명" scope="범위">

    scope 속성을 정의하지 않으면 page, request, session, application 영역에 저장되어 있는 '변수명'으로 등록된 변수를 모두 제거한다.

    <c:out> 태그

    데이터를 출력할 때 사용하는 태그이다.

    <c:out> 태그 속성

    속성 내용
    value="값" 출력할 값을 지정하는 속성이다. 값은 표현식, el도 가능하다.
    default="값" 값이 null 이면 출력될 값을 지정하는 속성이다.
    escapeXml="false" 태그 형식의 문자를 태그로 출력하게 만드는 속성이다.

    <c:out> 예시와 출력 결과

        <h1><c:out value="태그 안에 넣을 수 도 있음"></c:out></h1>
        <c:out value="<h2>escapeXml로 태그 적용</h2>" escapeXml="false"/>
        <c:out value="<h2>escapeXml로 태그 적용</h2>" escapeXml="true"/>
    
        <c:set var="msg" value="이거출력해"/>
        <c:out value="<h3>${msg}<h3>" escapeXml="false"></c:out>
    
        <h1>출력에 대한 예외처리</h1>
        <c:set var="v" value="유유"/>
        <c:out value="${v }" default="값이 없음"/>
        <p>객체 넣기</p>
        <c:set var="p" value='<%=new jstl.model.vo.Person("홍길동", 26, "남") %>'/>
    
        <c:out value="${p.name}  ${p.gender}"/>
        <c:set var="result" value="${ 20+330}"/>
        <c:out value="${result }"/>

    <c:if> 태그

    자바의 if 문과 비슷한 역할을 하는 태그이다.
    else 조건은 존재하지 않는다.
    조건식은 test 속성의 값으로 지정하며 EL 형식으로 기술한다.

    <c:if> 태그 사용법

        <c:if test="${num1>num2}'>
            num1 이 더 큽니다.
        </c:if>

    <c:if> 태그 속성

    속성 태그
    test="값"(true/flase) test 값을 기준으로 실행 여부 결정
    var="값" test 결과 값을 저장하는 변수 속성
    scope="범위" 범위(request, session, application)

    <c:if> 예시와 출력 결과

        <c:if test="${not (10 lt 15) }" var="result">
            <c:out value="${result}"/>
            <p>여기 실행</p>
        </c:if>

    파라미터로 받은 값도 처리할 수 있다.

        <p>파라미터 값으로 if 문 처리</p>
        <c:if test='${param.color == "빨강" }'>
            <span style="color:red;">빨강</span>
        </c:if>
        <c:if test='${param.color == "노랑" }'>
            <span style="color:yellow;">노랑</span>
        </c:if>
        <c:if test='${param.product =="핸드폰" }'>
            <h3>핸드폰</h3>
        </c:if>
        <c:if test='${param.product =="컴퓨터" }'></c:if>

    <c:choose> 태그

    자바의 switch 문과 비슷한 역할을 하는 태그이다.
    <c:when>, <c:otherwise> 태그와 함께 사용되는데 각각 switch 문의 case, default 절과 비슷한 역할을 한다.

    <c:choose> 태그의 사용법

        <c:choose>
            <c:when test="${num == 0}">
                num은 0 이다.
            </c:when>
               <c:when test="${num == 1}">
                num은 1 이다.
            </c:w시en>
            <c:otherwise>
                num은 0 도 1 도 아니다.
            </c:otherwise>
        </c:choose>

    <c:choose> 태그의 예시와 출력 결과

        <c:set var="color" value="빨강"/>
        <c:choose>
            <c:when test='${color == "노랑"}'>
                <span style="color:yellow;">노랑</span>
            </c:when>
            <c:when test='${color == "빨강" }'>
                <span style="color:red;">빨강</span>
            </c:when>
            <c:otherwise>
                없음<br/>
            </c:otherwise>
        </c:choose>

    <c:forEach> 태그

    자바의 for, for-in 문에 해당하는 기능을 제공한다.

    <c:forEach> 속성

    속성 내용
    items 반복할 객체 명(Collection 객체)
    begin 반복이 시작할 번호
    end 반복이 끝나는 번호
    step 번호 증가치
    var 현재 반복 횟수에 해당하는 변수의 이름
    varStatus 현재 반복에 해당하는 객체

    varStatus 속성

    속성 내용 사용법
    current 현재 반복 횟수 상태값명.current
    index 반복 라운드의 제로 기반 인덱스 (0..n) 상태값명.index
    count 반복 라운드의 1 기반 인덱스 (1..n) 상태값명.count
    first 현재 라운드가 처음인지 반환 상태값명.first
    last 현재 라운드가 마지막인지 반환 상태값명.last

    <c:forEach> 태그 사용법

        <c:forEach begin="1" end="100" items="${list} var="value">
            반복문
        </c:forEach>

    <c:forEach> 예시와 출력 결과

        <c:forEach var="val" begin="3" end="10" step="2" varStatus="status">
            ${val }<c:if test="${not status.last }">,</c:if>
        </c:forEach>
    
        <c:forEach var="val" begin="1" end="10" step="3" varStatus="status">
            ${status.index} : ${status.count }
        </c:forEach>

        <%
            String[] people={"홍길동", "원빈", "장동건", "조인성"};
             request.setAttribute("people", people);
             ArrayList<Person> list = new ArrayList();
             list.add(new Person("홍길동", 25, "남"));
             list.add(new Person("고길동", 59, "남"));
             list.add(new Person("둘리", 364, "남"));
             list.add(new Person("또치", 30, "남"));
             request.setAttribute("list", list);
        %>
        <c:forEach var="val" begin="0" end="4">
            ${people[val] }
        </c:forEach>
        <br/>
        <c:forEach var="p" items="${list }" varStatus="s">
            <h${s.index+1 }><c:out value="${p.name} ${p.age } ${p.gender }"/></h${s.index+1 }>
        </c:forEach>
    
        <h3>리스트에 있는 값을 테이블에 넣기</h3>
        <table border="1" style="border-collapse: collapse">
            <tr>
                <th>이름</th>
                <th>나이</th>
                <th>성별</th>
            </tr>
            <c:forEach var="p" items="${list }">
                <tr>
                    <td><c:out value="${p.name }"/></td>
                    <td><c:out value="${p.age }"/></td>
                    <td><c:out value="${p.gender }"/></td>
                </tr>
            </c:forEach>
        </table>

    <c:forTokens> 태그

    문자열에 포함된 구분자를 통해 토큰을 분리해서 반복 처리를 한다.
    items 속성에는 토큰을 포함하는 문자열을 지정하고 delims 속성에는 토큰을 구분자를 기술한다.
    속성은 forEach 문의 속성에서 delims 속성이 추가된다.

    <c:forTokens> 태그의 사용법

        <c:forTokens var="name" items="홍길동, 고길동, 둘리, 또치" delims=",">
            ${name}
        </c:forTokens>

    <c:forTokens> 예시와 출력 결과

        <c:set var="name" value="한효주, 아이린, 박보영, 서현진"/>
        <c:forTokens var="val" items="${name }" delims=", ">
            <c:out value="${val }"/><br/>
        </c:forTokens>
    
        <c:set var="token" value="자바.c,자바스크립트.html,.css.jsp,spring,mybatis"/>
        <c:forTokens var="lang" items="${token }" delims=", .">
            <c:out value="${lang }"/><br/>
        </c:forTokens>

    <c:url> 태그

    url 경로를 생성하고 param 속성을 선언하여 쿼리스트링을 정의할 수 있는 태그이다.

    <c:url> 태그의 사용법

        <c:url var="url" value="jstl.jsp">
            <c:param name="name" value="abc"/>
           </c:url>
        <a href="${url}">jstl.jsp</a>

    <c:import> 태그

    해당 페이지에 다른 페이지를 넣는 기능을 한다.
    jsp:include 와 차이는 jsp:include 는 코드가 작성된 부분에 출력되지만
    c:import 는 페이지의 내용을 변수에 저장할 수 있다.

    <c:import> 예시와 출력 결과

        여기는 기본 페이지 입니다    
    
        <c:import url="https://search.naver.com/search.naver" var="result">
            <c:param name="query" value="아이유"/>
        </c:import>
        여기는 기본 페이지 입니다
        ${result }

    <c:redirect> 태그

    response.sendredirect 와 비슷한 태그로 url 속성에 지정된 주소로 페이지가 이동된다.

    <c:redirect> 속성

    속성명 내용
    url 이동할 페이지 주소
    context 컨텍스트 경로 설정

    <c:redirect> 태그의 사용법

    <c:redirect url="URL" [context="경로명]>

    <c:catch> 태그

    발생한 예외를 처리하는 태그이다.
    var 속성에 예외의 내용이 들어간다.

    <c:catch> 예시와 출력 결과

        <%
            String[] arr = null;
            request.setAttribute("arr", arr);
        %>
    
        <c:catch var="e">
            예외 발생 전<br/>
            <%=arr[0] %><br/>
            예외 발생 후<br/>
        </c:catch>
        <c:out value="${e }"/>

    JSTL 코어 태그는 이렇게 다양한 태그들이 있기 때문에 익숙해 지기 위해서는 스크립틀릿으로 작성된 코드를 JSTL 태그로 바꾸어 보는 연습이 필요하다.

    JSTL 코어 태그 레퍼런스 를 참고하자

    반응형

    'JSP' 카테고리의 다른 글

    JSTL fmt 태그 사용하기  (0) 2019.02.02
    JSP JSTL 추가하기  (0) 2019.01.30
    JSP EL(Expression Language)  (0) 2019.01.30
    JSP 액션 태그 (Action Tag)  (0) 2019.01.29

    댓글

Designed by Tistory.