[JSP] JSTL(JSP Standard Tag Library)Back-End/JSP2024. 1. 10. 00:33
Table of Contents
실행환경
- windows 11 pro
- IntelliJ : 23.3.2
- Apache Tomcat : 9.0
- JDK : 17.0.9
라이브러리 추가
JSTL이란 JSP Standard Tag Library를 뜻한다.
먼저 JSTL JAR 파일을 받아야 한다.
아래의 링크에서 다운로드를 진행해야 한다.
https://mvnrepository.com/artifact/javax.servlet/jstl/1.2
빨간색으로 표시된 부분을 클릭해서 jar 파일을 다운로드 받자.
인텔리제이로 돌아와서 Project Structure를 클릭한다.
modules - 해당 프로젝트 선택 후 오른쪽에 보이는 +(Add) 버튼을 클릭한다.
이후 JARs or Dircetories.. 버튼을 눌러서 아까 다운로드 받은 JAR 파일을 추가해준다.
apply - ok를 누른다.
JSTL 라이브러리
라이브러리 | 기능 | 접두어 |
코어 | 일반 프로그램 언어에서 제공하는 변수선언, 조건/제어/반복문등의 기능을 제공한다. | c |
포맷팅 | 숫자,날짜,시간을 포맷팅 하는 기능과 국제화, 다국어 지원 기능을 제공한다. | fmt |
함수 | 문자열을 처리하는 함수를 제공한다. | fn |
데이터베이스 | 데이터베이스의 데이터를 입력/수정/삭제/조회하는 기능을 제공한다. | sql |
XML처리 | XML 문서를 처리할 때 필요한 기능을 제공한다. | x |
<!--아래의 코드는 JSP에서 코어 태그라이브러리를 사용할 때 작성해야 한다.-->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
JSTL 문법
연산자 | 예제 | 결과내용 |
c:url | url 호출 |
<c:url value="test.jsp"/>
<c:url value="/test.jsp" context="/other"/>
|
c:out | 객체를 화면에 출력 |
<c:out value="${data}"/>
<c:out value="${data}" default="값없음"/>
|
c:set | 저장영역에 객체를 저장 |
<!-- scope : page, request, session, application -->
<c:set scope="request" var="data" value="my_testValue" />
|
c:forEach | 반복문 제어 |
<c:forEach var="NOTICE" items="${NOTICE_LIS}" varStatus="status">
<c:out value="${NOTICE.COLUMN}"/>
</c:forEach>
<!-- 0123456 -->
<c:forEach var="S" begin="0" end="6">
<c:out value="${S}"/>
</c:forEach>
<!-- 036 -->
<c:forEach var="S" begin="0" end="6" step="3">
<c:out value="${S}"/>
</c:forEach>
|
c:remove | 저장영역에서 객체를 삭제 | <c:remove scope="request" var="data" /> |
c:if | 조건문 제어 |
<c:if test="${empty data}">
data 값이 비어있으면 실행
</c:if>
|
c:choose c:when c:otherwise |
복합조건문 제어 |
<c:choose>
<c:when test="${data == 'A'}">data 값이 A이면 실행</c:when>
<c:when test="${data == 'B'}">data 값이 B이면 실행</c:when>
<c:when test="${data == 'C'}">data 값이 C이면 실행</c:when>
<c:otherwise>data 값이 A, B, C값이 아닐 경우 실행</c:otherwise>
</c:choose>
|
c:import! | 다른 JSP 화면을 현재 화면에 출력 | <c:import! url="test.jsp"/> |
c:redirect | 경로 이동 | <c:redirect url="주소"/> |
status 상태 속성 제어
< c:foreach items=”${RESULT}” var=”RESULT” varStatus=”status”>
${status.current}<br/> <!– 현재 아이템 –>
${status.index}<br/> <!– 0부터의 순서 –>
${status.count}<br/> <!– 1부터의 순서 –>
${status.first}<br/> <!– 현재 루프가 처음인지 반환 –>
${status.last}<br/> <!– 현재 루프가 마지막인지 반환 –>
${status.begin}<br/> <!– 시작값 –>
${status.end}<br/> <!– 끝값 –>
${status.step}<br/> <!– 증가값 –>
< /c:forEach>
JSTL for문
인덱스로 접근
<c:forEach var="i" begin="1" end="5" step="1" varStatus="status">
번호 : ${status.count}
이름 : ${item[i].name}
직업 : ${item[i].job}
급여 : ${item[i].salary}
</c:forEach>
begin과 end로 접근
<c:forEach var="item" items="${list}" begin=0 end=5 step=1 varStatus="status">
번호 : ${status.count}
이름 : ${item.name}
직업 : ${item.job}
급여 : ${item.salary}
</c:forEach>
일반적인 접근
<c:forEach var="item" items="${list}" varStatus="status">
번호 : ${status.count}
이름 : ${item.name}
직업 : ${item.job}
급여 : ${item.salary}
</c:forEach>
JSTL break문 구현
<c:set var="doneLoop" value="false" />
<c:forEach var="entity" items="${_STORE}" varStatus="status">
<c:if test="${status.count % 6 eq 1}">
<c:set var="doneLoop" value="false" />
</c:if>
<c:if test="${not doneLoop}">
<span><input type="checkbox" id="store_id" name="store_id" value="<c:out value="${entity.STORE_ID}"/>" <c:out value="${entity.USE_YN}"/>><c:out value="${entity.STORE_NM}"/></span>
<c:if test="${status.count % 6 eq 0}">
<c:set var="doneLoop" value="true"/>
</c:if>
</c:if>
</c:forEach>
reference : https://yunamom.tistory.com/179
'Back-End > JSP' 카테고리의 다른 글
JSP와 서블릿을 이용한 MVC 프레임워크 만들기 (0) | 2024.02.17 |
---|---|
[JSP] IntelliJ에서 Servlet 생성 (0) | 2024.01.09 |
[JSP] IntelliJ 에서 JSP 개발환경 만들기 (1) | 2024.01.08 |
[JSP] 파일 업로드 (0) | 2023.12.25 |
[JSP] JSP와 데이터베이스 연동 (2) | 2023.11.27 |