EL
표현 언어(Expression Language)를 줄여 EL이라고 부른다. EL은 값이 없는 변수(null)에 대해 좀 더 관대하고 데이터 형 변환을 자동으로 해주는 특징이 있다. EL을 사용하면 값이 없거나 형 변환 등에 신경 쓸 필요 없이 서버로 전송할 수 있다.
JSP는 HTML 코드와 Script 코드가 섞이기 때문에 코드를 보는게 쉽지 않다. 그래서 HTML 태그와 비슷한 코드를 사용해서 처리할 수 있도록 만든 것이다. JSTL을 사용해 보기 좋고 이해하기 쉬운 코드를 작성하는 것이다.
| 라이브러리 | 기능 | 접두어 |
|---|---|---|
| 코어 | 일반 프로그램 언어에서 제공하는 변수선언, 조건/제어/반복문 등의 기능 제공 | c |
| 포맷팅 | 숫자, 날짜, 시간을 포맷팅 하는 기능과 국제화, 다국어 지원 기능 제공 | fmt |
| 함수 | 문자열을 처리하는 함수 제공 | fn |
| 데이터베이스 | 데이터베이스의 데이터를 입력/수정/삭제/조회하는 기능 제공 | sql |
| XML 처리 | XML 문서를 처리할 때 필요한 기능 제공 | x |
| 명령어 | 내용 | 예제 |
|---|---|---|
| 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="주소"/> |
| 연산자 | 예제 | 결과내용 |
|---|---|---|
| == 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 |
<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>
<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>
<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>
<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