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 쓰다보니 편리해져버린 녀석..!
'기타' 카테고리의 다른 글
[리눅스] 파일 찾고 복사하고 삭제하기 (0) | 2023.03.03 |
---|---|
최신 오픈소스 기술 트렌드(GraalVM) (4) | 2023.02.03 |
[Linux] 리눅스 그림 다운로드 (6) | 2022.06.23 |
[Linux] 리눅스 디렉토리와 파일 (6) | 2022.06.17 |
[Kotlin] 안드로이드 스튜디오 맛보기 (0) | 2022.05.03 |