💡 핵심 요약 (TL;DR)
JSTL과 EL : CORE 라이브러리(if, forEach, forTokens, choose)의 동작 원리를 이해하고 실제 프로젝트에 적용하기 위한 실무 가이드다.
* 변수값을 출력하고싶으면 EL태그사용을 적용할 수 있다.
<c:if test=”${조건문}”>
1 2 3 4 //기본형태 <c:if test ="${조건문}" > 실행문장 </c:if >
파라미터 데이터형태의 차이
jstl의 param.변수명 : 있는 그대로의 타입을 가지고온다. 숫자면 숫자, 문자열이면 문자열 -> 사칙연산가능
반면 js의 request.getParameter(“변수명”)는 무조건 문자열이다. -> 사칙연산불가
순서
core 라이브러리연결
1 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
변수값을 출력하고싶으면 EL태그사용
그냥 i찍으면 변수명이 출력됨.
변수값을 출력하고싶으면 EL태그사용
1 2 3 4 5 6 7 8 9 //기본값 <c:out value="${변수명}" /> //예시 <c:out value="i" /> <c:out value="${i}" /> //출력값 i 변수명
if else는 없다 if만 있음
1 2 3 4 //기본형태 <c:if test="${i=='itwill' }"> 아이티윌 입니다. </c:if>
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 <%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %> <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" > <html > <head > <meta http-equiv ="Content-Type" content ="text/html; charset=UTF-8" > <title > Insert title here</title > </head > <body > <c:set var ="i" value ="itwill" /> <c:out value ="i" /> <c:out value ="${i}" /> <hr > <c:if test ="${i=='itwill' }" > 아이티윌 입니다. </c:if > <hr > <fieldset > <legend > 큰수 찾기</legend > <form action ="if.jsp" > 숫자 1 : <input type ="text" name ="num1" > <br > 숫자 2 : <input type ="text" name ="num2" > <br > <input type ="submit" value ="큰수 찾기" > </form > </fieldset > <c:if test ="${ (param.num1) > (param.num2) }" > 큰값 : ${ param.num1 } </c:if > <c:if test ="${ param.num2 > param.num1 }" > 큰값 : ${ param.num2 } </c:if > <%-- <c:if test ="${ (param.num1 == param.num2) && (param.num1 != null)}" > --%> <c:if test ="${ (param.num1 == param.num2) and (param.num1 ne null)}" > 동일한 값 </c:if >
<c:forEach begin=”” end=”” step=”” var=””>와 <c:forTokens items=”” delims=”” var=””>
자주 사용함.
필수 속성: items=”” delims=”” var=””
jsp표현식은 사용할 수 없다 WHY? jstl실행전에 java가 먼저 실행되는데 jstl의 변수가 먼저 생성되지 않았기때문에 java는 변수를 몰라서 에러가 남.
1 2 3 4 5 6 //기본값 <c:forTokens items="문자데이터객체" delims="구분자" begin="시작값" end="끝값" step="단계" var="결과값을 저장할 변수" varStatus="상태"> </c:forTokens> - 이 많은 속성 중 필수 속성은 items="" delims="" var=""이다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 <% for(int i=0;i<5;i++){ out.print(i+"안녕하세요<br > "); } %> <hr > <c:forEach begin ="1" end ="5" step ="2" var ="i" > <h2 > ${i } JSTL : 안녕하세요 </h2 > </c:forEach > <hr > <c:forEach begin ="1" end ="10" step ="2" var ="odd" > 홀수 : ${odd }<br > </c:forEach > <hr > <c:forEach begin ="1" end ="10" step ="2" var ="even" > 짝수 : ${even }<br > </c:forEach > <hr > <c:forEach begin ="1" end ="5" step ="1" var ="num" > 숫자: ${num }<br > </c:forEach > <c:forEach begin ="1" end ="<%=5 %>" step ="1" var ="num" > 숫자: ${num }<br > </c:forEach > <c:forTokens items ="a.s.df.as.qwesd.fg.qwe3q" delims ="." var ="result" > 결과 : ${result}<br > </c:forTokens > <hr > <c:forTokens items ="안녕하세요 JSTL 문법입니다." delims =" " var ="result2" > 결과2 : ${result2}<br > </c:forTokens >
<c:choose><c:when test=”${조건식}”><c:otherwise>
choose태그를 사용하여 switch case구문을 나타낼수있다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 <c:set var ="num1" value ="0" /> <c:set var ="num2" value ="20" /> <c:choose > <c:when test ="${num1 > 0}" > 양수<br > </c:when > <c:when test ="${num1 < 0}" > 음수<br > </c:when > <c:otherwise > 0<br > </c:otherwise > </c:choose >
#TIL ITWILL(JAVA)