📢if 태그 : 조건에 대한 결과에 따라 태그내용의 포함 여부를 선택하는 태그
📌test 속성 : false 또는 true 중 하나를 속성값으로 설정
→ test 속성값이 [false]인 경우 태그내용을 포함하지 않고 [true]인 경우에만 태그내용 포함
→ test 속성값으로 EL 연산자를 사용하여 false 또는 true 중 하나를 제공받아 사용 가능📃core_if.jsp
※ webapp/jstl 폴더에 core_if.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>MVC</title> </head> <body> <h1>Core - 흐름 제어 태그</h1> <hr> <%-- if 태그 : 조건에 대한 결과에 따라 태그내용의 포함 여부를 선택하는 태그 --%> <%-- test 속성 : false 또는 true 중 하나를 속성값으로 설정 --%> <%-- → test 속성값이 [false]인 경우 태그내용을 포함하지 않고 [true]인 경우에만 태그내용 포함 --%> <%-- → test 속성값으로 EL 연산자를 사용하여 false 또는 true 중 하나를 제공받아 사용 가능 --%> <c:if test="true"> <p>test 속성값이 [true]인 경우 태그 내용 출력-1</p> </c:if> <%-- ----------------------------------------------------------------------------------------------------- --%> <c:if test="false"> <p>test 속성값이 [true]인 경우 태그 내용 출력-2</p> </c:if> <%-- ----------------------------------------------------------------------------------------------------- --%> <c:set var="sw" value="true"/> <%-- test 속성값으로 EL로 제공받은 스코프 속성값 사용 가능 --%> <c:if test="${sw }"> <p>test 속성값이 [true]인 경우 태그 내용 출력-3</p> </c:if> <hr> <%-- ----------------------------------------------------------------------------------------------------- --%> <c:set var="num" value="10"/> <%-- test 속성값으로 EL 사용시 EL 표현식에서 EL 연산자를 사용하여 false 또는 true 중 하나를 제공받아 사용 가능 --%> <c:if test="${num%2!=0 }">${num } = 홀수</c:if> <c:if test="${num%2==0 }">${num } = 짝수</c:if> <hr> <c:set var="num" value="11"/> <c:if test="${num mod 2 ne 0 }">${num } = 홀수</c:if> <c:if test="${num mod 2 eq 0 }">${num } = 짝수</c:if> <hr> <%-- ----------------------------------------------------------------------------------------------------- --%> <c:set var="score" value="80"/> <c:if test="${score <= 100 && score >= 0 }">${score }점은 정상적인 점수입니다.</c:if> <c:if test="${score > 100 || score < 0 }">${score }점은 비정상적인 점수입니다.</c:if> <hr> <c:set var="score" value="800"/> <c:if test="${score le 100 and score ge 0 }">${score }점은 정상적인 점수입니다.</c:if> <c:if test="${score gt 100 or score lt 0 }">${score }점은 비정상적인 점수입니다.</c:if> <hr> <%-- ----------------------------------------------------------------------------------------------------- --%> <c:set var="name" value="홍길동"/> <c:if test="${empty(name) }"> <p>name 속성명으로 저장된 속성값은 없습니다.</p> </c:if> <c:if test="${!empty(name) }"> <p>name 속성명으로 저장된 속성값은 [${name }]입니다.</p> </c:if> </body> </html>
📢choose 태그 : 조건에 대한 결과에 따라 태그내용의 포함 여부를 선택하기 위한 상위 태그
→ 하위태그를 이용하여 태그내용의 포함 여부 선택
→ 하위태그 : when 태그(1개 이상), otherwise(0개 또는 1개) 태그
→ choose 태그에는 하위태그외에 다른 코드가 존재할 경우 에러 발생 - JSP 주석 예외📢when 태그 : 조건에 대한 결과에 태그내용의 포함 여부를 선택하기 위한 태그
📌test 속성 : false 또는 true중 하나를 속성값으로 설정
→ test 속성값이 [false]인 경우 태그내용을 포함하지 않고 다음 when 태그 또는 otherwise 태그로 이동
→ test 속성값이 [true]인 경우 태그내용을 포함 후 choose 태그 종료📢otherwise 태그 :
📃core_choose.jsp
※ webapp/jstl 폴더에 core_choose.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>MVC</title> </head> <body> <h1>Core - 흐름 제어 태그</h1> <hr> <c:set var="choice" value="1"/> <%-- choose 태그 : 조건에 대한 결과에 따라 태그내용의 포함 여부를 선택하기 위한 상위 태그 --%> <%-- → 하위태그를 이용하여 태그내용의 포함 여부 선택 --%> <%-- → 하위태그 : when 태그(1개 이상), otherwise(0개 또는 1개) 태그 --%> <%-- → choose 태그에는 하위태그외에 다른 코드가 존재할 경우 에러 발생 - JSP 주석 예외 --%> <c:choose> <%-- when 태그 : 조건에 대한 결과에 태그내용의 포함 여부를 선택하기 위한 태그 --%> <%-- test 속성 : false 또는 true중 하나를 속성값으로 설정 --%> <%-- → test 속성값이 [false]인 경우 태그내용을 포함하지 않고 다음 when 태그 또는 otherwise 태그로 이동 --%> <%-- → test 속성값이 [true]인 경우 태그내용을 포함 후 choose 태그 종료 --%> <c:when test="${choice == 1 }"> <p>수성으로 이동합니다.</p> </c:when> <c:when test="${choice == 2 }"> <p>금성으로 이동합니다.</p> </c:when> <c:when test="${choice == 3 }"> <p>화성으로 이동합니다.</p> </c:when> <%-- ----------------------------------------------------------------------------------------------------- --%> <%-- otherwise 태그 : when 태그의 모든 조건이 거짓(false)인 경우 태그내용을 무조건 포함하기 위한 태그 --%> <c:otherwise> <p>지구로 이동합니다.</p> </c:otherwise> </c:choose> <hr> <%-- ----------------------------------------------------------------------------------------------------- --%> <c:set var="num" value="10"/> <c:choose> <c:when test="${num % 2 != 0 }">${num } = 홀수</c:when> <c:otherwise>${num } = 짝수</c:otherwise> </c:choose> </body> </html>
📃core_choose_form.jsp
※ webapp/jstl 폴더에 core_choose_form.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>MVC</title> </head> <body> <h1>Core - 흐름 제어 태그</h1> <hr> <form action="core_choose_action.jsp" method="post"> 점수입력 : <input type="text" name="score"> <button type="submit">전송</button> </form> </body> </html>
📃core_choose_action.jsp
※ webapp/jstl 폴더에 core_choose_action.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>MVC</title> </head> <body> <h1>Core - 흐름 제어 태그</h1> <hr> <c:choose> <c:when test="${!empty(param.score) }"><%-- !empty : 비어있지 않다면 --%> <p>입력점수 = ${param.score }</p> <c:choose> <c:when test="${param.score <= 100 && param.score >= 90 }"> <c:set var="grade" value="A"/> </c:when> <c:when test="${param.score <= 89 && param.score >= 80 }"> <c:set var="grade" value="B"/> </c:when> <c:when test="${param.score <= 79 && param.score >= 70 }"> <c:set var="grade" value="C"/> </c:when> <c:when test="${param.score <= 69 && param.score >= 60 }"> <c:set var="grade" value="D"/> </c:when> <c:otherwise> <c:set var="grade" value="F"/> </c:otherwise> </c:choose> <p>${param.score }점은 ${grade }학점 입니다.</p> </c:when> <c:otherwise> <p style="color: red;">입력페이지에서 점수를 반드시 입력해 주세요.</p> <a href="core_choose_form.jsp">입력페이지 이동</a> </c:otherwise> </c:choose> </body> </html>
📢forEach 태그 : 태그내용을 반복적으로 포함하기 위한 태그
📌var 속성 : 스코프 속성명을 속성값으로 설정
📌begin 속성 : 스코프 속성값으로 저장된 시작값(Integer)을 속성값으로 설정
📌end 속성 : 스코프 속성값으로 저장된 종료값(Integer)을 속성값으로 설정
📌step 속성 : 스코프 속성값의 증가값(Integer)을 속성값으로 설정📃core_forEach.jsp
※ webapp/jstl 폴더에 core_forEach.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>MVC</title> </head> <body> <h1>Core - 흐름 제어 태그</h1> <hr> <%-- forEach 태그 : 태그내용을 반복적으로 포함하기 위한 태그 --%> <%-- var 속성 : 스코프 속성명을 속성값으로 설정 --%> <%-- begin 속성 : 스코프 속성값으로 저장된 시작값(Integer)을 속성값으로 설정 --%> <%-- end 속성 : 스코프 속성값으로 저장된 종료값(Integer)을 속성값으로 설정 --%> <%-- step 속성 : 스코프 속성값의 증가값(Integer)을 속성값으로 설정 --%> <c:forEach var="i" begin="1" end="5" step="1" > <p>${i }번째 출력되는 내용입니다.</p> </c:forEach> <hr> <%-- 1~100 범위의 정수들의 합계를 계산하여 출력 --%> <c:forEach var="i" begin="1" end="100" step="1"> <c:set var="tot" value="${tot+i }"/> </c:forEach> <p>1~100 범위의 정수들의 합계 = ${tot }</p> <hr> <%-- ----------------------------------------------------------------------------------------------------- --%> <%-- 구구단을 표(table) 형식으로 출력 --%> <table> <c:forEach var="i" begin="1" end="9" step="1"> <tr> <c:forEach var="j" begin="2" end="9" step="1"> <td width="100">${j} * ${i} = ${i*j}</td> </c:forEach> </c:forEach> </table> </body> </html>
📌var 속성 : 배열 또는 콜렉션 객체의 요소값을 제공받아 저장하기 위한 스코프 속성명을 속성값으로 설정
📌items 속성 : 반복 처리할 배열 또는 콜렉션 객체를 속성값으로 설정 - EL 사용📃core_forEach_one.jsp
※ webapp/jstl 폴더에 core_forEach_one.jsp 생성
<%@page import="java.util.ArrayList"%> <%@page import="xyz.itwill.el.Student"%> <%@page import="java.util.List"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <% String[] nameArray={"홍길동","임꺽정","전우치","일지매","장길산"}; request.setAttribute("nameArray", nameArray); // List<Student> studentList=new ArrayList<Student>(); studentList.add(new Student(1000,"홍길동")); studentList.add(new Student(2000,"임꺽정")); studentList.add(new Student(3000,"전우치")); studentList.add(new Student(4000,"일지매")); studentList.add(new Student(5000,"장길산")); request.setAttribute("studentList", studentList); // request.getRequestDispatcher("core_forEach_two.jsp").forward(request, response); %>
📃core_forEach_two.jsp
※ webapp/jstl 폴더에 core_forEach_two.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>MVC</title> </head> <body> <h1>Core - 흐름 제어 태그</h1> <hr> <ul> <li>${nameArray[0] }</li> <li>${nameArray[1] }</li> <li>${nameArray[2] }</li> <li>${nameArray[3] }</li> <li>${nameArray[4] }</li> </ul> <hr> <%-- ----------------------------------------------------------------------------------------------------- --%> <%-- 일괄처리하는 방법 --%> <ul> <c:forEach var="i" begin="0" end="4" step="1"> <li>${nameArray[i] }</li> </c:forEach> </ul> <hr> <%-- ----------------------------------------------------------------------------------------------------- --%> <%-- forEach 태그를 사용하여 스코프 속성값으로 제공된 배열 또는 콜렉션 객체의 요소를 하나씩 얻어와 반복처리하는 기능 제공 --%> <%-- var 속성 : 배열 또는 콜렉션 객체의 요소값을 제공받아 저장하기 위한 스코프 속성명을 속성값으로 설정 --%> <%-- items 속성 : 반복 처리할 배열 또는 콜렉션 객체를 속성값으로 설정 - EL 사용 --%> <ul> <c:forEach var="name" items="${nameArray }"> <li>${name }</li> </c:forEach> </ul> <hr> <%-- ----------------------------------------------------------------------------------------------------- --%> <c:forEach var="student" items="${studentList }"> <div>학번 = ${student.num }, 이름 = ${student.name }</div> </c:forEach> </body> </html>
📢forTokens 태그 : 스코프 속성값으로 저장된 문자열(String 객체)을 특정 문자열로 분리하여 반복 처리하는 태그
📌items 속성 : 분리 처리하기 위한 문자열을 속성값으로 설정 - EL 사용 가능
📌delims 속성 : 문자열을 분리하기 위한 구분자를 속성값으로 설정
📌var 속성 : 분리된 문자열을 하나씩 얻어와 스코프 속성값으로 저장하기 위한 스코프 속성명을 속성값으로 설정
📃core_forTokens.jsp
※ webapp/jstl 폴더에 core_forTokens.jsp 생성
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <%@taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>MVC</title> </head> <body> <h1>Core - 흐름 제어 태그</h1> <hr> <c:set var="phone" value="010-1234-5678"/> <p>전화번호 = ${phone }</p> <hr> <%-- ----------------------------------------------------------------------------------------------------- --%> <%-- forTokens 태그 : 스코프 속성값으로 저장된 문자열(String 객체)을 특정 문자열로 분리하여 반복 처리하는 태그 --%> <%-- items 속성 : 분리 처리하기 위한 문자열을 속성값으로 설정 - EL 사용 가능 --%> <%-- delims 속성 : 문자열을 분리하기 위한 구분자를 속성값으로 설정 --%> <%-- var 속성 : 분리된 문자열을 하나씩 얻어와 스코프 속성값으로 저장하기 위한 스코프 속성명을 속성값으로 설정 --%> <c:forTokens items="${phone }" delims="-" var="num"> <div>${num }</div> </c:forTokens> </body> </html>