기타

JSTL 사용하기

살찐만두 2022. 6. 16. 11:30
728x90

Thymleaf 만 사용하다가 JSTL을 사용하게 되었다. JSTL 이 뭘까?!

JSTL이란?
자바서버 페이지 표준 태그 라이브러리 (JavaServer Pages Standard Tag Library, 약칭 
JSTL ) 이다.
HTML 안에서 스크립틀릿을 대체하여 사용한다. 

JSTL은 라이브러리이기 때문에 헤더에 지정 추가하여 사용하여야 한다!

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

JSTL core 태그들이다.

<c:set> 변수명에 값을 할당
<c:out> 값을 출력
<c:if> 조건식에 해당하는 블럭과 사용될 scope설정
<c:choose> 다른 언어의 switch와 비슷
<c:when> switch문의 case에 해당
<c:otherwise> switch문의 default에 해당
<c:forEach> 다른언어의 loop문 items 속성에 배열을 할당할 수 있음

 

* EL?

EL은 예를들어 기존 jsp에서 스크립틀릿으로 <%=name%> 으로 주었다면 jstl은 ${name}으로 활용할 수 있다. EL에는 다양한 내장객체를 포함하고 있고, 연산자 또한 사용할 수 있다.

 

어떤식으로 활용을 하냐면

<c:out value="${name.companyName}"/>

이런식으로 model로 보낸 name객체의 companyName까지 꺼내올 수 있는것이다. 타임리프랑 비슷하면서 조금 다르지만 비슷한 녀석!

if 문 같은 경우에는!

<c:if test="${(name.companyName eq '회사이름')}" ></c:if>
<c:if test="${(name.petName eq '몽이')}" ></c:if>
<c:if test="${(name.carName eq '붕붕이')}" ></c:if>

이런식으로 name안에 있는 애들의 값을 비교 할 수 있다. 여기서 eq는 equal의 의미로 같냐고 물어보는거고 ne(notEqual) 도 쓸 수 있다.

 

value값을 checked 하게 하고 싶을 경우에는

<c:if test="${fn:contains(name.petName, '몽이')}" > checked</c:if>

이렇게 쓰면 된다 fn:contains는 왠지 모르지만 써야하더라..? 그리고 저렇게 checked를 해주면 petName이 몽이라면 checked가 된 상태로 출력이 가능하다!!

 

그리고 for문도 돌릴 수 있는데!

<c:forEach var="name" items="${name}">
    <option value="${name.petName}">
  	  <c:out value="${name.petName}"></c:out>
    </option>
</c:forEach>

name이 리스트로 담겨있다면 forEach문을 이용해서 모든 아이들을 꺼낼 수 있는 것이다!! 

 

스크립트 안에서도 

var nameArry = new Array(); 


<c:forEach var="name" items="${name}">
    <option value="${name.petName}">
  	  <c:out value="${name.petName}"></c:out>
    </option>
</c:forEach>

이렇게 담는다면 배열로 담겨서 스크립트 안에서 활용할 수 있다! 단건이라면 그냥 ${name} 해서 꺼내면 된다! 굿

 

나는 프로젝트를 하면서 if문과 forEach문, c:out을 가장 많이 쓴 것 같다!

jstl보다는 thymleaf가 이제 떠오르는 추세지만 둘 다 사용 할 수 있게 된 것 같아 정말 좋은 경험이다!!

jstl 쓰다보니 편리해져버린 녀석..!

728x90