JSTL에 대하여

2025. 2. 24. 23:53·Server/JSP - TomCat - Servlet

⭐️ JSTL이란 ?

JSTL은 JSP Standard Tag Library의 줄임말이다.

 

JSP에서 자주 사용하는 기능들을 태그 형태로 제공하는

표준 라이브러리(커스텀 액션태그)이다.

 

자바 코드를 직접 사용하지 않고도 반복문, 조건문, 포멧처리 등등 

쉽게 수행할 수 있다.

 

태그로 작성이 되어있기 때문에 코드 가독성이 높아진다.

 

⭐️ JSTL 라이브러리 추가 및 등록

1.

maven repository 사이트 접속

https://mvnrepository.com/

 

 

2.

Jakarta Standard Tag Library Implementation ,

Jakarta Standard Tag Library API 다운로드 

 

jakarta.servlet.jsp.jstl-3.0.1.jar

 

 

jakarta.servlet.jsp.jstl-api-3.0.2.jar

 

해당 라이브러리의 jar 파일을 다운로드 한다.

 

3.

2개 파일을 WEB-INF 안에있는 lib 폴더에 등록

 

 

jar 파일 등록

 

⭐️ JSTL core 라이브러리 등록

JSTL을 사용하고자 하는 해당 JSP페이지 상단에

taglib 지시어를 사용해서 선언한다.

 

[ taglib 선언 ]

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

 

JSTL의 core라이브러리를 가져와 사용할 것이다.

 

core 라이브러리는 변수와 조건문, 반복문과 같은 로직과 관련된 문법을 제공한다.

 

 

⭐️ JSTL 태그

[ JSTL 태그 종류 ]

 태그이름 설명 
<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 라이브러리를 사용해보자

 

🔥 JSTL 사용법

🏷️  <c: set /> 태그

변수 선언과 동시에 초기화 가능.

<c:set var="변수명" value="값" [scope="저장객체"] />

 

변수 선언하고 초기값을 대입하는 기능을 제공한다.

 

해당 변수를 어떤 scope에 담아둘지 결정 가능.

 

-> 기본적으로 scope가 page이기 때문에 c:set으로 선언한 변수는

EL로 빠르게 가져올 수 있다 ‼️

 

[ 사용 예시 ]

<c:set var="num1" value="10"/>
<c:set var="num2" value="20" scope="request"/>

num1 : ${num1}
num2 : ${num2}

 

[ 결과 ]

출력 결과

 

🏷️  <c: remove/> 태그

변수 삭제를 함.

 

<c:remove var="제거하고싶은 변수명" [scope="저장객체"] />

 

해당 scope영역에 해당 변수를 찾아서 제거하는 태그

 

scope 지정 생략시 모든 scope에서 해당 변수를 "전부" 찾아서 제거한다.

 

=> 해당 scope에 .removeAttribute()를 통해 제거하는 것과 동일.

 

[ 사용 예시 ]

<c:set var="result" value="${num1 + num2}" scope="session"/>
삭제 전 : ${result} <br>
<c:remove var="result" scope="request"/>
request 영역에서 삭제 후 : ${result} <br><br>
<c:remove var="result"/>
모든 scope에서 삭제 후 : ${result} <br><br>

 

[ 결과 ]

출력 결과

 

🏷️  <c: out/> 태그

변수를 출력할때 사용.

 

<c:out value="출력하고자 하는 값" [default= 기본값"] [escapeXml="true | false"] />

 

[ 사용 예시 ]

<c:out value="${result}"/> <br>
<c:out value="${result}" default="없음"/> <br>

<c:set var="outTest" value="<b>출력 테스트</b>"/> <br>

<c:out value="${outTest}" escapeXml="true"/> <br>
<c:out value="${outTest}" escapeXml="false"/> <br>

 


[ 결과 ]

출력 결과

 

 

처음 result는 값이 없으므로 출력 x -> EL구문은 값이 없으면 화면에 띄우지 않음.

 

escapeXml은 Html 태그를 포함하여 출력하냐 , 적용해서 출력하냐 설정.

 

🏷️  <c: if/> 태그

java의 if문과 비슷한 역할을 하는 태그이다.

조건식은 test속성에 작성 (단 , EL구문으로 기술해야 함)

 

<c:if test="조건식"/>

 

[ 사용 예시 ]

<c:if test="${num1 > num2}">
	<b>num1이 num2보다 큽니다.</b>--%>
</c:if>


<c:if test="${num1 < num2}">
	<b>num2이 num1보다 큽니다.</b>--%>
</c:if>

<c:set var="str" value="안녕~?"/>

<c:if test="${str eq '안녕~?'}">
    <h4>그래 안녕!</h4>
</c:if>

 

 

[ 결과 ]

출력 결과

 

eq -> equals()를 의미

 

🏷️  <c: choose/> 태그

choose는 else-if 와 비슷한 구문.

 

c:choose , c:when , c:otherwise로 구성.

 

[ 사용 예시 ]

<c:choose>
    <c:when test="${num1 > 30}">
        <h5>num1은 30보다 크다</h5>
    </c:when>
    <c:when test="${num1 > 20}">
        <h5>num1은 20보다 크다</h5>
    </c:when>
    <c:when test="${num1 > 10}">
        <h5>num1은 10보다 크다</h5>
    </c:when>
    <c:otherwise>
        <h5>모든 조건이 맞지 않다.</h5>
    </c:otherwise>
</c:choose>

 

[ 결과 ]

출력 결과

 

현재 page cope의 num1은 10이기때문에 otherwise가 실행된다.

 

🏷️  <c: forEach/> 태그

반복문과 동일함.

 

for loop문 

<c:forEach var="변수명" begin="초기값" end"끝값" [step="반복시 증가값"] />

 

향상된 for문

<c:forEach var="변수명" items="순차적으로 접근할 객체( 배열 / 컬랙션 )"

[varStatus = "현재 접근된 요소의 상태값"] 

 

[ 사용 예시 ]

<c:forEach var="i" begin="1" end="10" step="2">
    반복확인 : ${i} <br>
</c:forEach>

<c:forEach var="i" begin="1" end="5">
    <h${i}>태그안에서 사용 :</h${i}>
</c:forEach>

<%-- ============= --%>

 <c:set var="colors" value="red,yellow,green,pink"/>
colors : ${colors} <br>

<ul>
    <c:forEach var="c" items="${colors}">
        <li style="color : ${c}">${c}</li>
    </c:forEach>
</ul>

 

[ 결과 ]

출력 결과

 

🏷️  <c: forTokens/> 태그

주로 구분자를 넣는 반복문에 사용

 

<c:forTokens var="변수명" items="분리하고싶은 문자열" delims="구분자" />

 

구분자를 통해서 분리된 각각의 문자열에 순차적으로 접근하면서 반복을 수행

 

-> Java의 문자열. split("구분자")와 유사하다.

 

[ 사용 예시 ]

 <c:set var="device" value="컴퓨터,노트북/TV,핸드폰,냉장고/세탁기"/>

<ol>
    <c:forTokens var="d" items="${device}" delims=",/">
        <li>${d}</li>
    </c:forTokens>
</ol>

 

[ 결과 ]

출력 결과

 

delims의 구분자는 "./," 이나 "/.,"이런식으로 순서가 섞여있어도 구분하는 기준은

 

안에 있는 구분자 하나하나를 구분해서 나누어 준다.

 

🏷️  <c: url/> 태그

url 경로를 생성하고, 쿼리스트링을 정의해둘 수 있는 태그

 

<c:url var="변수명" value="요청URL">

    <c:param name="키" value="값"/>

    <c:param name="키" value="값"/>

    <c:param name="키" value="값"/>

</c:url>

 

[ 사용 예시 ]

<a href="list.do?color=black&item=5">기존방식 요청</a>

<c:url var="listUrl" value="list.do">
    <c:param name="color" value="black"/>
    <c:param name="item" value="15"/>
</c:url>

<a href="${listUrl}">c:url이용방식</a>

 

[ 결과 ]

기존 a태그로 요청한 방식
url태그로 만든 url 요청보낸 결과

 


JSTL을 사용함으로써 좀더 쉽게 html과 java문법간의 이질적인
느낌이 많이 사라졌다.
여러 문법을 통해 jsp를 잘 만들어보자.

'Server > JSP - TomCat - Servlet' 카테고리의 다른 글

JSP 포워딩(Forwarding)과 리다이렉트(Redirect)의 차이  (1) 2025.02.27
session.removeAttribute()와 session.invalidate() 차이  (2) 2025.02.26
JSP Scope에 대하여  (0) 2025.02.23
Servlet에대하여  (0) 2025.02.21
IntelliJ 와 Tomcat 연결  (2) 2025.02.20
'Server/JSP - TomCat - Servlet' 카테고리의 다른 글
  • JSP 포워딩(Forwarding)과 리다이렉트(Redirect)의 차이
  • session.removeAttribute()와 session.invalidate() 차이
  • JSP Scope에 대하여
  • Servlet에대하여
KoesJin
KoesJin
hEELo
  • KoesJin
    Seok DevLog
    KoesJin
  • 전체
    오늘
    어제
    • 분류 전체보기 (110)
      • Back End (31)
        • DataBase (15)
        • JAVA (12)
        • JDBC (4)
      • Front End (9)
        • HTML5 & CSS (3)
        • Java Script (6)
        • REACT (0)
      • Server (9)
        • JSP - TomCat - Servlet (7)
        • Spring Boot (2)
      • GitHub (1)
      • AWS (1)
      • IT 지식 (기술면접 대비) (20)
      • Weekly TIL (39)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
    • 글쓰기
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    commit
    INNER JOIN
    css
    weekly til - day 39
    weekly til - day 38
    exception
    weekly til - day 43
    weekly til - day 40
    GC
    weekly til - day 41
    DAO
    where
    View
    from
    순서에 대하여
    dml
    DDL
    select
    order by
    MVC 패턴
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.1
KoesJin
JSTL에 대하여
상단으로

티스토리툴바