Servlet & JSP

[JSP] JSTL

각시탈코더 2022. 2. 19. 12:57

I.JSTL 주요 태그 사용법

  • <%@ taglib uri="사용할 태그의 라이브러리 URI" prefix="접두사" %>

JSTL 확장 태그를 사용하려면 태그 라이브러리를 사용해야한다. 위는 JSTL 태그 라이브러리다. <%@ taglib%>는 JSP의 지시자 태그다. uri 속성은 태그 라이브러리의 네임스페이스 이름이다. 네임스페이스 이름은 URI로 되어있다. prefix 속성은 JSTL 태그를 사용할 때 태그 이름 앞에 붙일 접두사다. 

 

 

1.태그 라이브러리와 URI, 접두사

태그 라이브러리 접두사 네임스페이스의 URI 식별자
Core c http://java.sun.com/jsp/jstl/core
XML x http://java.sun.com/jsp/jstl/xml
I18N fmt http://java.sun.com/jsp/jstl/fmt
Database sql http://java.sun.com/jsp/jstl/sql
Function fn http://java.sun.com/jsp/jstl/functions

 

II.JSTL 주요 태그

 JSTL은 <c:out>, <c:set>, <c:remove>, <c:choose>, <c:forEach> 등 다양한 태그를 제공한다.

 

2-1 <c:out> 태그

:출력문을 만드는 태그다.

 

문법

  • <c:out value="출력할 값" default="기본값"/>
  • <c:out value="출력할 값">기본값</c:out>

예제

  1. <c:out value="안녕하세요!"/><br>
  2. <c:out value="${null}">반갑습니다.</c:out><br>
  3. <c:out value="안녕하세요!">반갑습니다.</c:out><br>
  4. <c:out value="${null}"/><br>

실행결과

  1. 안녕하세요!
  2. 반갑습니다.
  3. 안녕하세요!
  4.  

 

2-2 <c:set> 태그

 

변수를 생성하거나 기존 변수의 값을 덮어쓸 때 사용한다.

 

문법

  • <c:set var="변수명" value="값" scope="page|request|session|application"/>   // value 속성을 사용하여 값 설정
  • <c:set var="변수명" scope="page|request|session|application"/>값</c:set>    // 태그 콘텐츠를 사용하여 값 설정

 

2-3 <c:remove> 태그

: <c:remove> 태그는 보관소에 저장된 값을 제거하는 태그다. 

 

문법

  • <c:remove var="변수명" scope="page | request | session | application"/>

예제

 

<h3> 보관소에 저장된 값 제거</h3>

<% pageContext.setAttribute("username1", "홍길동"); %>

① ${username1}<br>

<c:remove var="username1"/>

② ${username1}<br>

 

실행결과

보관소에 저장된 값 제거

①홍길동

 

2-4 <c:if> 태그

: test 속성값이 참이면, 콘텐츠가 실행된다. 

 

문법

  • <c:if test="조건" var="변수명" scope=" page | request | session | application"> 콘텐츠 </c:if>

 

예제

<c:if test="$(10 > 20)" var="result1">

①10은 20보다 크다.<br>

</c:if>

②${result1}<br>

 

<c:if test="${10 < 20}" var="result2">

③10은 20보다 크다.<br>

</c:if>

④${result2}<br>

 

실행결과

② false

③ 10은 20보다 크다.

④ true

 

 

2-5 <c:choose> 태그

:자바의 switch, case 등과 같은 기능을 수행한다. 여러가지 조건에 따라 다른 작업을 해야 할 필요가 있을 때 사용한다.

 

문법

 

<c:choose>

   <c:when test="참거짓 값"></c:when>

   <c:when test="참거짓 값"></c:when>

  ...

   <c:otherwise></otherwise>

</c:choose>

 

예제

 

<c:set var="userid" value="admin'/>

<c:choose>

   <c:when test="${userid == 'hong'}">

     홍길동님 반갑습니다.

   </c:when>

   <c:when test="${userid == 'leem'}">

     임꺽정님 반갑습니다.

   </c:when>

   <c:when test="${userid == 'admin'}">

     관리자 전용 페이지입니다.

   </c:when>

   <c:otherwise>

     등록되지 않은 사용자입니다.

   </c:otherwise>

</c:choose>

 

실행결과

관리자 전용 페이지입니다.

 

2-6 <c:forEach> 태그

 :는 반복적인 작업을 정의할 때 사용한다.

 

문법

  •  <c:forEach var="변수명" items="목록데이터" begin="시작인덱스" end="종료인덱스"> 콘텐츠 </c:forEach>

item 속성값으로 오는 값들

  • 배열
  • java.util.Collection 구현체.
  • java.util.Iterator 구현체
  • java.util.Enumeration 구현체
  • java.util.Map 구현체
  • 콤마(,) 구분자로 나열된 문자열.

var 속성은 반복문을 돌면서 items에서 꺼낸 항목 값을 가리키는 참조변수.

<c:forEach var="board" items="${list}">

<tr>

   <td>${board.bno}</td>

 

예제

 

<% pageContext.setAttribute("nameList", new String[]{"홍길동", "임꺽정", "일지매"}); %>

<ul>

<c:forEach var="name" items="${nameList}>

  <li>${name}</li>

</c:forEach>

</ul>

 

 

실행결과

  • 홍길동
  • 임꺽정
  • 일지매

 

예제

 

<% pageContext.setAttribute("nameList2", new String[] {"홍길동", "임꺽정", "일지매", "주먹대장", "똘이장군"}); %>

<ul>

<c:forEach var="name" items="${nameList2}" begin="2" end="3">

  <li>${name}</li>

</c:forEach>

</ul>

 

실행결과

  • 일지매
  • 주먹대장

2-7 <c:url> 태그

 :URL을 생성해주는 기능을 한다. URL을 생성하면서 contextPath를 자동으로 생성한다. 그래서 contextPath가 달라져도 URL을 수정할 필요가 없다. 

 

contextPath 자동 생성의 의미

○url의 주소가 처음에는 </변경전/board/list?bno=~~이하 생략~~>이였다. c:url을 사용하지 않으면 contextPath가 변경이될 떄 모든 주소를 매번 수정해줘야 했다. 하지만 context 뒤의 정보들을 고정함으로써 이러한 수고를 없앴다.

 

문법

●<c:url var="변수이름" value="url경로" var="변수명" scope="영역"/>

 

예시

●<c:url value='/board/list?bno=${board.bno}&page=${board.page}%pageSize=${board.pageSize}'/>

 

※ <c:url 태그를 쓰는 이유>

  • context path를 자동으로 포함시키므로 서버 소스를 수정함에 따른 변화를 자동으로 적용해준다.
  • 클라이언트의 브라우져가 쿠키사용을 금지하면 로그인 유지가 힘들어진다. 이 때 세션을 유지하기위해 링크 뒤에 특정값(sessionId)을 부여해줘서 로그인을 유지해준다.

출처:MVC아키틱처, 마이바티스, 스프링으로 만드는 실무형 개발자 로드맵 자바 웹 개발 워크북(저자: 엄진영, 출판사:프리렉)