JSTL

yunuyununu·2025년 3월 5일
0

개발 상식

목록 보기
16/17

📌 JSTL

  • JSTL이란 JSP 표준라이브러리(JSP Standard Tag Library)이다.
  • JSP에서 반복과 조건, 데이터 관리 포맷, XML 조작, 데이터베이스 액세스를 구현하는 커스텀 태그 라이브러리 모음이다.
  • 시간, 날짜, 숫자의 포맷이나 문자열 가공 등 처리에서 비즈니스 로직과 프리젠테이션 로직을 분리할 수 있게 해준다.
  • EL을 사용하여 표현한다.

    EL
    표현 언어(Expression Language)를 줄여 EL이라고 부른다. EL은 값이 없는 변수(null)에 대해 좀 더 관대하고 데이터 형 변환을 자동으로 해주는 특징이 있다. EL을 사용하면 값이 없거나 형 변환 등에 신경 쓸 필요 없이 서버로 전송할 수 있다.

👁‍🗨 JSTL을 사용하는 이유

JSP는 HTML 코드와 Script 코드가 섞이기 때문에 코드를 보는게 쉽지 않다. 그래서 HTML 태그와 비슷한 코드를 사용해서 처리할 수 있도록 만든 것이다. JSTL을 사용해 보기 좋고 이해하기 쉬운 코드를 작성하는 것이다.

📌 JSTL 라이브러리

라이브러리기능접두어
코어일반 프로그램 언어에서 제공하는 변수선언, 조건/제어/반복문 등의 기능 제공c
포맷팅숫자, 날짜, 시간을 포맷팅 하는 기능과 국제화, 다국어 지원 기능 제공fmt
함수문자열을 처리하는 함수 제공fn
데이터베이스데이터베이스의 데이터를 입력/수정/삭제/조회하는 기능 제공sql
XML 처리XML 문서를 처리할 때 필요한 기능 제공x

📌 JSTL 문법

1. Core

명령어내용예제
c:urlurl 호출<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="주소"/>

2. 연산자

연산자예제결과내용
==
eq
${1 == 1}
${1 eq 1}
true
!=
ne
${1 != 1}
${1 ne 1}
false
<
lt
${1 < 10}
${1 lt 10}
true
>
gt
${1 > 10}
${1 gt 10}
false
<=
le
${1 <= 1}
${1 le 1}
true
>=
ge
${1>=0}
${1 ge 0}
false
&&
and
${true && false}
${true and false}
false
||
or
${true || false}
${true or false}
true
!
not
${!true}
${not true}
false
empty${empty name}name이 null이거나 빈 문자열이면 true
not empty${not empty name}name이 null도 아니고 빈 문자열도 아니면 true

📌 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문

1. 인덱스로 접근

<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>

2. brgin과 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>

3. 일반적인 접근

<c:forEach var="item" items="${list}" varStatus="status">
    번호 : ${status.count}
    이름 : ${item.name}
    직업 : ${item.job}
    급여 : ${item.salary}
</c:forEach>

4. 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
https://velog.io/@skaus458/JSTL

profile
코딩이의 끄적끄적

0개의 댓글