크리스의 개발일기

[JAVA] JSTL Core Tag란? 본문

JAVA

[JAVA] JSTL Core Tag란?

ChrisJang 2020. 11. 20. 16:21

JSTL란?

JSTL은 JSP 표준라이브러리(JSP Standard Tag Library)의 약어이다. 자주 사용될 수 있는 커스텀 태그들을 모아서 표준으로 모아놓은 태그 라이브러리다.

 

 

JSTL 설정

 

...
  <dependencies>
 ...
    <!-- taglibs -->
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>datetime</artifactId>
        <version>1.0.1</version>
    </dependency>       
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>string</artifactId>
        <version>1.1.0</version>
    </dependency>       
    <dependency>
        <groupId>taglibs</groupId>
        <artifactId>standard</artifactId>
        <version>1.1.2</version>
    </dependency>
    <dependency>
        <groupId>javax.servlet</groupId>
        <artifactId>jstl</artifactId>
        <version>1.1.2</version>
    </dependency>
  </dependencies>


출처: https://hackersstudy.tistory.com/42 [공대인들이 직접쓰는 컴퓨터공부방]

 

JSTL 사용 (JSP파일에서의 사용 선언)

 

<%@ taglib prefix="c"   uri="http://java.sun.com/jsp/jstl/core" %>

 

JSTL 종류

태그 라이브러리 접두어 주요기능 선언문
Core c 변수 지원, 제어문, 페이지 관련 처리 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
XML x XML관련 처리 <%@ taglib prefix="x" uri="http://java.sun.com/jsp/jstl/xml" %>
I18N fmt 포맷 처리, 국제화 지원 <%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
Database sql DB관련 CRUD 처리 <%@ taglib prefix="sql" uri="http://java.sun.com/jsp/jstl/sql" %>
Functions fn collection 처리, String 처리 <%@ taglib prefix="fn" uri="http://java.sun.com/jsp/jstl/functions" %>

 

JSTL Core Tag의 종류

 태그이름

설명 

<c:set />

 변수의 선언 및 제거

<c:remove /> 

<c:out /> 

변수의 출력 

 <c:catch />

예외 처리 

<c:if /> 

조건문 (else는 없다) 

<c:choose /> 

Switch문과 비슷 

<c:when />

<c:otherwise /> 

<c:forEach /> 

반복문 

<c:forTokens /> 

구분자로 분할하여 반복문 

<c:url />

URL 생성 

<c:param /> 

파라미터 추가 

<c:import /> 

페이지 첨부 

 <c:redirect />

URL 이동 

 

Core Tag 설명

 

1. <c:set /> Tag

- JSP의 setAttribute()와 같은 역할

- <c:set var="변수명" 

value="변수에 넣을 값"

property="자바빈 객체 or Map 객체 값을 설정할 프로퍼티 명"

scope="변수 공유 범위" />

 

<!-- scope 속성은 선택적이며 page로 기본 설정되어 있다. -->

<c:set  var="변수명"  value="할당된 값"

        scope="변수의 유효 범위 page|request|session|application" />



<!-- 간단 사용 예 -->

<c:set var="country" value="Korea" scope="request" />

<c:set var="intArray" value="<%=new int[] {1,2,3,4,5} %>" />

 

2. <c:remove /> Tag

- JSP의 removeAttribute()와 같은 역할

- <c:remove var="변수명" 

scope="변수 공유 범위" />

 

<c:remove var="country" scope="request" />

 

3. <c:out /> Tag

- '<%=...>'와 같다. JSP의 표현식을 대체

- <c:out var="변수명" 

default="기본값"

escapeXML="true|false" />

 

<!-- Syntax -->

<c:out var="변수명" default="기본값" escapeXML="true|false" />



<!-- 간단 사용 예 -->

<p><c:out value="${country}" default="Korea" escapeXml="true"/></p>

<p>${country}</p><p>${intArray[0]}</p>

 

4. <c:catch /> Tag

- Body에서 실행되는 코드의 예외 처리

- <c:catch var="에러메시지가 포함될 변수명" />

 

<c:catch var="ex">
  <%= 1/0 %>
</c:catch> <br/>

Error Msg: ${ex} <br/>

 

5. <c:if /> Tag

- 조건문

- <c:if test="조건 판별식"

var="변수명"

scope="변수 공유 범위" />

 

<!-- Syntax -->
<c:if test="expression"  var="name"  scope="scope">
body content
</c:if>

<!-- 간단 사용 예 -->
<c:set var="login" value="true" />
<c:if test="${!login}"> <p><a href="/login.ok">로그인</a></p></c:if>
<c:if test="${login}"> <p><a href="/logout.ok">로그아웃</a></p></c:if>

<!-- 아래 예제와 같이 null 비교를 하지 않고 empty 비교를 하면 null과 ""를 동시에 체크할 수 있다. -->
<c:if test="${!empty country}"><p><b>${country}</b></p></c:if>

 

6. <c:choose />, <c:when />, <c:otherwise />

- Switch문과 동일, 여러개의 when 태그와 하나의 otherwise 태그를 가진다

- <c:if /> 태그에 else가 없으므로 대체식으로도 많이 사용

- <c:choose>

<c:when test="조건 판별식"> .... </c:when>

<c:when test="조건 판별식"> .... </c:when>

<c:when test="조건 판별식"> .... </c:when>

</c:choose>

 

<!-- Syntax -->
<c:choose>
<c:when test="expression">
body content
</c:when>
...
<c:otherwise>
body content
</c:otherwise>
</c:choose>

<!-- 간단 사용 예 -->
<c:choose>
  <c:when test="${login}">
    <p><a href="/logout.ok">로그아웃</a></p>
  </c:when>
  <c:otherwise>
    <p><a href="/login.ok">로그인</a></p>
  </c:otherwise>
</c:choose>

 

7. <c:forEach /> Tag

- 객체 전체에 걸쳐 반복 실행에 사용

- <c:forEach var="현재 아이템의 변수명" 

items="반복 데이터가 있는 아이템 Collection 명"

begin="시작 값, 기본값은 0"

end="종료 값"

step="증가 값"

varStatus="반복 상태 값을 지닌 변수" />

 

※ varStatus는 forEach의 상태를 알 수 있는 값이 들어 있다.

  • $(변수.current} : 현재의 인덱스
  • $(변수.index} : 0부터의 인덱스
  • $(변수.count} : 1부터의 인덱스
  • $(변수.first} : 현재 루프가 처음인지 확인
  • $(변수.last} : 현재 루프가 마지막인지 확인
  • $(변수.begin} : forEach문의 시작 값
  • $(변수.end} : forEach문의 끝 값
  • $(변수.step} : forEach문의 증가 값
  •  
<!-- 정수 범위내의 반복 Syntax -->
<c:forEach var="name" varStatus="name"
            begin="expression" end="expression" step="expression">
  body content
</c:forEach>
 
<!-- 컬렉션 범위내의 반복 Syntax -->
<c:forEach var="name" items="expression" varStatus="name"
           begin="expression" end="expression " step="expression">
  body content
</c:forEach>
 
<!-- forEach 정수 범위내의 반복 -->
<c:forEach var="i" begin="0" end="10" step="2" varStatus="x">
  <p> i = ${i}, i*i = ${i * i} <c:if test="${x.last}">, last = ${i}</c:if> </p>
</c:forEach>
 
<!-- forEach 컬렉션 범위내의 반복 -->
<%
  java.util.List list = new java.util.ArrayList();
 
  java.util.Map map = new java.util.HashMap();
  map.put("color","red");
  list.add(map);
   
  map = new java.util.HashMap();
  map.put("color","blue");
  list.add(map);
   
  map = new java.util.HashMap();
  map.put("color","green");
  list.add(map);
   
  request.setAttribute("list", list);
%>
 
<c:forEach var="map" items="${list}" varStatus="x">
  <p> map(${x.index}) = ${map.color}  </p>
</c:forEach>


8. <c:forTokens /> Tag

- 문자열을 구분자(delimiter)로 분할

- <c:forTokens var="현재 아이템의 변수 명"

items="반복 데이터가 있는 아이템 Collection 명"

delims="구분자, 여러개 지정 가능"

begin="시작 값, 기본 값은 0"

end="종료 값"

step="증가 값"

varStatus="반복 상태 값을 지닌 변수" />

 

<!-- Syntax -->
<c:forTokens var="name" items="expression"
             delims="expression" varStatus="name"
             begin="expression" end="expression" step="expression">
  body content
</c:forTokens>
 
<!-- 간단 사용 예 -->
<b>
<c:forTokens var="color" items="빨|주|노|초|파|남|보" delims="|" varStatus="i" >
     <c:if test="${i.first}">color : </c:if>
     ${color} <a href="<c:url value='/TEST.jsp' />">
 
   View Test
 
</a>
     <c:if test="${!i.last}">,</c:if>
</c:forTokens>
</b>



9. <c:url /> Tag

- URL의 생성

- <c:url var="생성한 URL이 저장될 변수 명"

value="생성할 URL" 

scope="변수 공유 범위" />

 

<a href="<c:url value='/TEST.jsp' />">
   View Test
</a>

 

10. <c:param /> Tag

- 파라미터 추가

- <c:param name="파라미터 명" value="값" />

 

<c:url value="TEST.jsp" var="paramTest">
   <c:param name="data1" value="1000" />
   <c:param name="data2" value="2000" />
</c:url>
 
<a href="${paramTest}"
   View TEST with data1(1000), data2(2000)
</a>

 

11. <c:import /> Tag

- 페이지 첨부

- import 태그 내에 param 태그도 사용할 수 있다.

- <c:import url="첨부할 URL" />

 

 

<c:import url="/TEST1.jsp" />
<c:import url="/TEST2.jsp">
   <c:param name="data1" value="1000" />
   <c:param name="data2" value="2000" />
</c:import>

 

12. <c:redirect /> Tag

- sendRedirect()와 동일

- <c:redirect url="이동할 URL" />

 

<c:redirect url="http://hackersstudy.tistory.com/" />

 

출처 :

http://wiki.gurubee.net/pages/viewpage.action?pageId=26740270

http://bloodygale.tistory.com/82
https://hackersstudy.tistory.com/42

atoz-develop.tistory.com/entry/JSP-JSTL-%EC%82%AC%EC%9A%A9-%EB%B0%A9%EB%B2%95-%EC%A3%BC%EC%9A%94-%ED%83%9C%EA%B7%B8-%EB%AC%B8%EB%B2%95-%EC%A0%95%EB%A6%AC

 

'JAVA' 카테고리의 다른 글

[JAVA] 추상클래스와 인터페이스의 차이  (0) 2020.11.27
[JAVA]자바메서드 (수정)  (0) 2020.11.24
[JAVA] 하이라키(Hierarchy) 구조란?  (0) 2020.11.17
[JAVA] static final과 final이란?  (0) 2020.11.17
[JAVA] LIST와 ArrayList란?  (0) 2020.11.17
Comments