2019. 3. 2. 15:28ㆍJAVA Back-End
JSTL (JSP Standard Tag Library)
앞서 EL에 대한 포스팅이 있었는데, EL은 JSP의 스크립트 언어로 자바 코드를 모두 넣으면서 복잡하고 유지보수에 어려움이 생기는 걸 해소하기위해 EL을 사용한다고 했는데 JSTL도 이런 이유로 등장했고, 다른 사람들과 협업을 용이하게 만들었습니다.
프론트 개발자나 웹퍼블리셔는 Tag에 친숙할텐데, JSTL은 JSP페이지에서 html Tag형식으로 로직을 수행하도록 도와줍니다.
JSTL을 쓰는 궁극적인 이유는 스트릿트립을 대체함입니다. JSTL을 사용함으로써 자바 로직을 완벽하게 대체합니다.
JSTL 사용하기 전
- http://tomcat.apache.org/download-taglibs.cgi
- 링크에서 3가지( Impl / Spec / EL ) jar파일을 다운밭아 프로젝트의 WEB-INF/lib/ 폴더에 복사합니다.
jsp문서에서 JSTL을 사용하려면 코드 한 줄을 선언해줘야합니다.
"c라는 prefix로 시작하는 태그로 해당 uri에서 가져온다!" 라는 의미입니다.
(보통 <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> 다음 줄에 선언합니다.)
JSTL이 제공하는 태그 종류
코어 태그
<c:set>
set은 변수를 선언하는 태그입니다.
<c:remove>
remove는 변수를 제거할 때 사용합니다.
밑의 보기에서 첫 번째처럼 사용하면 모든 scope가 다 사라진다. 특정 영역의 변수만 제거하고 싶으면 지우고싶은 scope를 명시해주면 됩니다.
<c:out>
out은 변수 내용을 출력할 때 사용합니다. 자바의 system.out.println("hello!")를 이 태그로 사용하면 아래와 같이 나타냅니다.
<c:if test="true | false | ${조건식}">
test 조건이 true면 태그내의 내용을 처리합니다. 아니면 EL을 사용해 그 조건을 만족하면 JSTL을 실행시킵니다.
// var="result"는 result라는 변수에 true/false결과를 담을 수 있습니다. 따라서 이름없음? true가 출력됩니다.
<c:choose>
코어에서 switch문을 choose태그를 사용해서 작성할 수 있습니다.
- <c:when test="조건문"> : 일반적인 if문처럼 사용합니다.
- <c:otherwise> : 일반적인 else구문처럼 사용합니다.
<c:forEach>
배열이나 컬렉션에서 for문과 비슷한 반복 로직인 forEach구문을 사용할 수 있습니다.
- var - EL에서 사용될 변수이름
- items - List, Set, Map, Enumeration, Iterator 등의 컬렉션
- begin - 값을 읽어올 인덱스 시작값
- end - 값을 읽어올 인덱스 끝 값
출력결과
<c:import>
import를 이용해서 지정한 URL에 연결해 결과를 지정한 변수에 저장합니다.
- url - 결과를 읽어올 URL
- charEncoding - 읽어온 결과를 저장할 떄 사용할 캐릭터 인코딩
- var - URL을 통해 읽어온 결과물을 저장할 변수명
- scope - 변수를 저장할 영역
- <c:param> 태그는 URL속성에 지정한 사이트에 연결할 때 전송할 parameter를 입력합니다.
출력결과
<c:redirect>
redirect를 이용해서 지정한 page로 리다이렉트 할 수 있습니다. response.sendRedirect()의 용도와 같습니다.
jstlredirect.jsp
[참고] https://programmingsummaries.tistory.com/84
[ edwith - 웹프로그래밍 부스트코스 ] 를 개인적으로 공부하고 정리한 공간입니다. 잘못된 부분은 피드백 주시면 감사하겠습니다
'JAVA Back-End' 카테고리의 다른 글
[JDBC] JDBC (Java Database Connectivity) (1) | 2019.03.06 |
---|---|
[Servlet]Maven이란? (0) | 2019.03.05 |
[JSP/Servlet] EL(Expression Language) (0) | 2019.03.01 |
[JSP/Servlet] 스코프(Scope) (0) | 2019.02.27 |
[JSP] redirect 와 forward (1) | 2019.02.26 |