Servlet & Jstl

그동안 우리가 해왔던 프로젝트 방식 : Model1 방식
: 비지니스 로직과 디자인이 복합적으로 같이 들어가있는 형태
소규모 프로젝트에 적당

프로젝트 규모가 커지면서 나온 방식이 Model2 방식
: 비지니스 로직과 디자인을 분리한 형태
로직처리 : servlet (Model) -> 상속 받는 것
디자인과 출력 : jsp,html (View)
이때 JSP 에서 출력시 자바코드를 사용하지 않고 주로 JSTL 태그를 이용해서 request 나 session 에 저장된
데이타를 접근을 한다

JSTL (JSP Standard Tag Library)

Jstl - eclipse

WEB-INF/lib/jstl-버전.jar 필요

jstl 수 연산 정리

덧셈

${su1+su2 }

뺄셈

${su1-su2 }

곱셈

${su1*su2 }

나눗셈

${su1/su2 }
${su1 div su2 }
  • 나머지
${su1%su2 }
${su1 mod su2 }

증감연산자식 수식

증가 전 su1: <c:out value="${su1 }"/><br>
<c:set var="su1" value="${su1+1 }"/>
증가 후 su1: ${su1 }

-> su1++같이 쓰임

ex1_jstl.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Cute+Font&family=Diphylleia&family=Dokdo&family=Nanum+Brush+Script&family=Nanum+Gothic+Coding&family=Noto+Sans+KR&display=swap" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
<title>Insert title here</title>
</head>
<body>
	<h2>JSTL 태그 연산자 연산</h2>
	
	<!-- 변수선언
		 변수 - su1 값 7 -->
	<c:set var="su1" value="7"/>
	<c:set var="su2" value="4"/>
	
	<b>두 변수 값 출력(su1:${su1 },su2:${su2 })</b>
	<table class="table table-bordered" style="width: 400px;">
		<tr>
			<th width="250">\${su1+su2 }</th>
			<td>
				${su1+su2 }
			</td>
		</tr>
		
		<tr>
			<th width="250">\${su1-su2 }</th>
			<td>
				${su1-su2 }
			</td>
		</tr>
		
		<tr>
			<th width="250">\${su1*su2 }</th>
			<td>
				${su1*su2 }
			</td>
		</tr>
		
		<tr>
			<th width="250">\${su1/su2 }</th>
			<td>
				${su1/su2 }
			</td>
		</tr>
		
		<tr>
			<th width="250">\${su1 div su2 }</th>
			<td>
				${su1 div su2 }
			</td>
		</tr>
		
		<tr>
			<th width="250">\${su1%su2 }</th>
			<td>
				${su1%su2 }
			</td>
		</tr>
		
		<tr>
			<th width="250">\${su1 mod su2 }</th>
			<td>
				${su1 mod su2 }
			</td>
		</tr>
		
		<tr>
			<th>su1 1증가</th>
			<td>
				<!-- value값을 가져와서 변수 초기화해줌 -->
				증가 전 su1: <c:out value="${su1 }"/><br>
				<c:set var="su1" value="${su1+1 }"/>
				증가 후 su1: ${su1 }
			</td>
		</tr>
	</table>
</body>
</html>

jstl-format

변수선언

<c:set var="name" value="김영준"/>
<c:set var="age" value="22"/>

호출시 표현식 사용

<c:set var="today" value="<%=new Date() %>"/>

jstl 출력법1

<h2>이름: <c:out value="${name }"/></h2>

jstl 출력법2

   <h2>이름: ${name }</h2>
   <h2>나이: ${age }</h2>
   <h2>오늘날짜: ${today }</h2>

pattern 이용한 fmt 날짜형식

   <fmt:formatDate value="${today }" pattern="yyyy-MM-dd HH:mm"/><br>
   <fmt:formatDate value="${today }" pattern="yyyy-MM-dd a hh:mm"/><br>
   <fmt:formatDate value="${today }" pattern="yyyy-MM-dd HH:mm EEE"/><br>
   <fmt:formatDate value="${today }" pattern="yyyy-MM-dd HH:mm EEEE"/><br>
   <fmt:formatDate value="${today }" pattern="yyyy년 MM월 dd일"/><br>
   
   <c:set var="money" value="6780000"/>
   <c:set var="num1" value="123.45678"/>

숫자 출력

   <pre>
   		${money }
   		${num1 }
   		
   		<!-- 천단위 구분기호 number:3자리마다 컴마 -->
   		<fmt:formatNumber value="${money }" type="number"/>
   		
   		<!-- currency: 3자리마다 컴마, 화폐단위 -->
   		<fmt:formatNumber value="${money }" type="currency"/>
   		
   		<!-- pattern -->
   		<fmt:formatNumber value="${num1 }" pattern="0.00"/>
   		
   		<fmt:formatNumber value="1.5" pattern="0.00"/>
   		
   		<fmt:formatNumber value="1.5" pattern="0.##"/>
   		
   </pre>

jstl if문

   <!-- 변수선언 -->
   <c:set var="num1" value="7"/>
   <c:set var="num2" value="4"/>
   
   <!-- 출력:c:out은 생략가능 -->
   숫자1: ${num1 }<br>
   숫자2: ${num2 }<br>
   
   <!-- 조건문 else 없음 -->
   <c:if test="${num1>num2 }">
   		<h2>숫자1이 더 큽니다!!</h2>
   </c:if>
   
   <c:if test="${num1<num2 }">
   		<h2>숫자2 더 큽니다!!</h2>
   </c:if>
   
   
   
   <!-- if문 -->
   <c:set var="nara" value="프랑스"/>
   
   <c:if test="${nara=='체코' }"> <!-- 문자열비교도 ==으로 비교한다 -->
   		<h2>체코에서 한달살기 하고싶다</h2>
   </c:if>
   
   <c:if test="${nara=='프랑스' }">
   		<h2>프랑스의 에탑에서 와인마시기</h2>
   </c:if>

jstl_format.jsp

<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Cute+Font&family=Diphylleia&family=Dokdo&family=Nanum+Brush+Script&family=Nanum+Gothic+Coding&family=Noto+Sans+KR&display=swap" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
<title>Insert title here</title>
</head>
<body>
   <!-- jstl 변수선언 -->
   <c:set var="name" value="김영준"/>
   <c:set var="age" value="22"/>
   <!-- 호출시 표현식 사용 -->
   <c:set var="today" value="<%=new Date() %>"/>
   
   <!-- jstl 출력법_1 -->
   <h2>이름: <c:out value="${name }"/></h2>
   
   <!-- jstl 출력법_2 -->
   <h2>이름: ${name }</h2>
   <h2>나이: ${age }</h2>
   <h2>오늘날짜: ${today }</h2>
   
   <!-- pattern 이용한 fmt날짜형식 -->
   <fmt:formatDate value="${today }" pattern="yyyy-MM-dd HH:mm"/><br>
   <fmt:formatDate value="${today }" pattern="yyyy-MM-dd a hh:mm"/><br>
   <fmt:formatDate value="${today }" pattern="yyyy-MM-dd HH:mm EEE"/><br>
   <fmt:formatDate value="${today }" pattern="yyyy-MM-dd HH:mm EEEE"/><br>
   <fmt:formatDate value="${today }" pattern="yyyy년 MM월 dd일"/><br>
   
   <c:set var="money" value="6780000"/>
   <c:set var="num1" value="123.45678"/>
   
   <!-- 숫자출력 -->
   <pre>
   		${money }
   		${num1 }
   		
   		<!-- 천단위 구분기호 number:3자리마다 컴마 -->
   		<fmt:formatNumber value="${money }" type="number"/>
   		
   		<!-- currency: 3자리마다 컴마, 화폐단위 -->
   		<fmt:formatNumber value="${money }" type="currency"/>
   		
   		<!-- pattern -->
   		<fmt:formatNumber value="${num1 }" pattern="0.00"/>
   		
   		<fmt:formatNumber value="1.5" pattern="0.00"/>
   		
   		<fmt:formatNumber value="1.5" pattern="0.##"/>
   		
   </pre>
   
   
   <!-- if문 -->
   <!-- 변수선언 -->
   <c:set var="num1" value="7"/>
   <c:set var="num2" value="4"/>
   
   <!-- 출력:c:out은 생략가능 -->
   숫자1: ${num1 }<br>
   숫자2: ${num2 }<br>
   
   <!-- 조건문 else 없음 -->
   <c:if test="${num1>num2 }">
   		<h2>숫자1이 더 큽니다!!</h2>
   </c:if>
   
   <c:if test="${num1<num2 }">
   		<h2>숫자2 더 큽니다!!</h2>
   </c:if>
   
   
   
   
   <!-- if문 -->
   <c:set var="nara" value="프랑스"/>
   
   <c:if test="${nara=='체코' }"> <!-- 문자열비교도 ==으로 비교한다 -->
   		<h2>체코에서 한달살기 하고싶다</h2>
   </c:if>
   
   <c:if test="${nara=='프랑스' }">
   		<h2>프랑스의 에탑에서 와인마시기</h2>
   </c:if>
</body>
</html>

jstl-form

조건 만족 시 결과 출력

!empty -> 비어있지 않으면

	<c:if test="${!empty param.irum }">
		<h2>이름: ${param.irum }</h2>
		<h3>가고싶은 나라: ${param.nara }</h3>
		
		<c:choose>
			<c:when test="${param.nara=='프랑스' }">
				<h3 style="color: green;">프랑스는 에펠탑</h3>
			</c:when>
			<c:when test="${param.nara=='체코' }">
				<h3 style="color: magenta;">체코는 코젤맥주</h3>
			</c:when>
			<c:when test="${param.nara=='하와이' }">
				<h3 style="color: cyan;">하와이는 콜라</h3>
			</c:when>
			<c:when test="${param.nara=='오스트리아' }">
				<h3 style="color: orange;">오스트리아는 마리앙트와네트</h3>
			</c:when>
			<c:otherwise>
				<h3 style="color: red;">${param.nara }는 해당사항 없음</h3>
			</c:otherwise>
		</c:choose>
	</c:if>

jstl_form.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Cute+Font&family=Diphylleia&family=Dokdo&family=Nanum+Brush+Script&family=Nanum+Gothic+Coding&family=Noto+Sans+KR&display=swap" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
<title>Insert title here</title>
</head>
<body>
<!-- 한글엔코딩 -->
<fmt:requestEncoding value="utf-8"/>
	<form action="ex3_jstl_form.jsp" method="post">
		<h3>이름입력</h3>
		<input type="text" name="irum" class="form-control">
		<h3>가고싶은 나라</h3>
		<input type="text" name="nara" class="form-control">
		<br>
		<button type="submit" class="btn btn-info">결과확인</button>
	</form>
	
	<!-- 이름을 입력시에만 결과가 나오게 -->
	<c:if test="${!empty param.irum }">
		<h2>이름: ${param.irum }</h2>
		<h3>가고싶은 나라: ${param.nara }</h3>
		
		<c:choose>
			<c:when test="${param.nara=='프랑스' }">
				<h3 style="color: green;">프랑스는 에펠탑</h3>
			</c:when>
			<c:when test="${param.nara=='체코' }">
				<h3 style="color: magenta;">체코는 코젤맥주</h3>
			</c:when>
			<c:when test="${param.nara=='하와이' }">
				<h3 style="color: cyan;">하와이는 콜라</h3>
			</c:when>
			<c:when test="${param.nara=='오스트리아' }">
				<h3 style="color: orange;">오스트리아는 마리앙트와네트</h3>
			</c:when>
			<c:otherwise>
				<h3 style="color: red;">${param.nara }는 해당사항 없음</h3>
			</c:otherwise>
		</c:choose>
	</c:if>
</body>
</html>

jstl-tag test

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Cute+Font&family=Diphylleia&family=Dokdo&family=Nanum+Brush+Script&family=Nanum+Gothic+Coding&family=Noto+Sans+KR&display=swap" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
<title>Insert title here</title>
</head>
<body>
<fmt:requestEncoding value="utf-8"/>
	<form action="" method="post">
		<table class="table table-bordered" style="width: 300px;">
			<tr>
				<th>이름</th>
				<td>
					<input type="text" name="name" class="form-control"
					style="width: 120px;">
				</td>
			</tr>
			<tr>
				<th>나이</th>
				<td>
					<input type="text" name="age" class="form-control"
					style="width: 120px;">
				</td>
			</tr>
			<tr>
				<th>급여</th>
				<td>
					<input type="text" name="pay" class="form-control"
					style="width: 120px;">
				</td>
			</tr>
			<tr>
				<th>가고싶은나라</th>
				<td>
					<input type="text" name="nara" class="form-control"
					style="width: 120px;">
				</td>
			</tr>
			<tr>
				<td colspan="2" align="center">
					<button type="submit" class="btn btn-success">결과확인</button>
				</td>
			</tr>
		</table>
		
		<!-- 이름을 입력했을 경우에만 출력 div 출력
		
			이름: 김영환
			나이: 19세(미성년자)..조건-20살 이상이면 성년 아니면 미성년
			월급여: 180만원..화폐단위와 천단위 구분기
			가고싶은나라: choose이용해서 출력은 맘대로 할것!!!
		 -->
		<c:if test="${!empty param.name }">
			<div class="alert alert-info" style="width: 400px;">
			<h2>이름: ${param.name }</h2>
			<h2>나이: ${param.age }세
			<c:if test="${param.age>=20}">
				(성년)
			</c:if>
			<c:if test="${param.age<20 }">
				(미성년)
			</c:if>
			</h2>
			<h2><fmt:formatNumber value="${param.pay }" type="currency"/></h2>
			
			<c:choose>
				<c:when test="${param.nara=='미국' }">
					<h2>미국 배낭여행 가보고 싶다</h2>
				</c:when>
				<c:when test="${param.nara=='캐나다' }">
					<h2>캐나다 워홀 가보고 싶다</h2>
				</c:when>
				<c:when test="${param.nara=='한국' }">
					<h2>한국에서 취업하고 싶다</h2>
				</c:when>
				<c:when test="${param.nara=='일본' }">
					<h2>일본 온천여행 가고 싶다</h2>
				</c:when>
			</c:choose>
			</div>
		</c:if>
	</form>
</body>
</html>

jstl-foreach

처음과 시작(foreach)

	<h3>1~10출력</h3>
	<c:forEach var="a" begin="1" end="10">
		${a }
	</c:forEach>
	
	<h3>0~30출력 3의배수</h3>
	<c:forEach var="a" begin="0" end="30" step="3">
		${a }
	</c:forEach>

배열 만들기 및 출력

${변수명}일 경우 앞에 requestScope가 생략된 것임...request에 저장된 데이터는
자바처럼 getAttribute로 얻지 않아도 바로 출력 가능하다
하지만 세션은 sessionScope를 생략하지 않는다 (requestScope와 구분짓기위해서)

	<%
		List<String> list=new ArrayList<>();
	
		list.add("red");
		list.add("cadetblue");
		list.add("green");
		list.add("purple");
		list.add("orange");
		
		request.setAttribute("list", list);
		request.setAttribute("totalCount", list.size());
		//세션에 아이디저장
		session.setAttribute("id", "tjdgus");
	%>
    
	<h3>list에 총 ${totalCount }개의 색상이 들어있다</h3>
	<h3>list에 총 ${requestScope.totalCount }개의 색상이 들어있다</h3>
	<!-- 달러{변수명}일 경우 앞에 requestScope가 생략된 것임...request에 저장된 데이터는
		 자바처럼 getAttribute로 얻지 않아도 바로 출력 가능하다
		 하지만 세션은 sessionScope를 생략하지 않는다 (requestScope와 구분짓기위해서) -->
		 
	<h3>세션 아이디 출력</h3>
	<h4>현재 로그인한 아이디는 ${sessionScope.id }입니다</h4>

배열(리스트) 전체 출력

	<h3>list 전체 출력</h3>
	<table class="table table-bordered" style="width: 300px;">
		<tr>
			<th>No.</th><th>index</th><th>color</th>
		</tr>
		<c:forEach var="s" items="${list }" varStatus="i">
			<tr>
				<td>${i.count }</td> <!-- 무조건 1부터 출력 -->
				<td>${i.index }</td> <!-- 실제 list의 인덱스값 출력 -->
				<td>
					<b style="color: ${s}">${s }</b>
				</td>
			</tr>
		</c:forEach>
	</table>

배열(리스트) 부분 출력

	<h3>list인덱스 2~4 출력</h3>
	<table class="table table-bordered" style="width: 300px;">
		<tr>
			<th>No.</th><th>index</th><th>color</th>
		</tr>
		<c:forEach var="s" items="${list }" varStatus="i" begin="2" end="4">
			<tr>
				<td>${i.count }</td> <!-- 무조건 1부터 출력 -->
				<td>${i.index }</td> <!-- 실제 list의 인덱스값 출력 -->
				<td>
					<b style="color: ${s}">${s }</b>
				</td>
			</tr>
		</c:forEach>
	</table>

foreach.jsp

<%@page import="java.util.ArrayList"%>
<%@page import="java.util.List"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Cute+Font&family=Diphylleia&family=Dokdo&family=Nanum+Brush+Script&family=Nanum+Gothic+Coding&family=Noto+Sans+KR&display=swap" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
<title>Insert title here</title>
</head>
<body>
	
	<h3>1~10출력</h3>
	<c:forEach var="a" begin="1" end="10">
		${a }
	</c:forEach>
	
	<h3>0~30출력 3의배수</h3>
	<c:forEach var="a" begin="0" end="30" step="3">
		${a }
	</c:forEach>
	
	<%
		List<String> list=new ArrayList<>();
	
		list.add("red");
		list.add("cadetblue");
		list.add("green");
		list.add("purple");
		list.add("orange");
		
		request.setAttribute("list", list);
		request.setAttribute("totalCount", list.size());
		//세션에 아이디저장
		session.setAttribute("id", "tjdgus");
	%>
	
	<h3>list에 총 ${totalCount }개의 색상이 들어있다</h3>
	<h3>list에 총 ${requestScope.totalCount }개의 색상이 들어있다</h3>
	<!-- 달러{변수명}일 경우 앞에 requestScope가 생략된 것임...request에 저장된 데이터는
		 자바처럼 getAttribute로 얻지 않아도 바로 출력 가능하다
		 하지만 세션은 sessionScope를 생략하지 않는다 (requestScope와 구분짓기위해서) -->
		 
	<h3>세션 아이디 출력</h3>
	<h4>현재 로그인한 아이디는 ${sessionScope.id }입니다</h4>
	
	<hr>
	<h3>list 전체 출력</h3>
	<table class="table table-bordered" style="width: 300px;">
		<tr>
			<th>No.</th><th>index</th><th>color</th>
		</tr>
		<c:forEach var="s" items="${list }" varStatus="i">
			<tr>
				<td>${i.count }</td> <!-- 무조건 1부터 출력 -->
				<td>${i.index }</td> <!-- 실제 list의 인덱스값 출력 -->
				<td>
					<b style="color: ${s}">${s }</b>
				</td>
			</tr>
		</c:forEach>
	</table>
	
	<h3>list인덱스 2~4 출력</h3>
	<table class="table table-bordered" style="width: 300px;">
		<tr>
			<th>No.</th><th>index</th><th>color</th>
		</tr>
		<c:forEach var="s" items="${list }" varStatus="i" begin="2" end="4">
			<tr>
				<td>${i.count }</td> <!-- 무조건 1부터 출력 -->
				<td>${i.index }</td> <!-- 실제 list의 인덱스값 출력 -->
				<td>
					<b style="color: ${s}">${s }</b>
				</td>
			</tr>
		</c:forEach>
	</table>
</body>
</html>

jstl arr

배열 만들기 및 출력 2

<%
	<%
		String mycolor []={"red","cadetblue","purple","green","orange","lightblue","gray"};
	%>
    
    <c:set var="mycolor" value="<%=mycolor %>"/>

	<table class="table table-bordered" style="width: 300px;">
	<caption align="top"><b>전체값 출력</b></caption>
		<tr>
			<th>index</th><th>count</th><th>color</th>
		</tr>
		<c:forEach var="a" items="${mycolor }" varStatus="i">
			<tr align="center">
				<td>${i.index }</td>
				<td>${i.count }</td>
				<td style="background-color: ${a}">${a }</td>
			</tr>
		</c:forEach>
	</table>

배열 부분 출력2

	<!-- 2~5번 -->
	<table class="table table-bordered" style="width: 300px;">
	<caption align="top"><b>일부값 출력</b></caption>
		<tr>
			<th>index</th><th>count</th><th>color</th>
		</tr>
		<c:forEach var="a" items="${mycolor }" varStatus="i" begin="2" end="5">
			<tr align="center">
				<td>${i.index }</td>
				<td>${i.count }</td>
				<td style="background-color: ${a}">${a }</td>
			</tr>
		</c:forEach>
	</table>

c:forTokens

	<c:set var="msg" value="민규,성신,영환,성경,형준"/>
	${msg }<br>
	
	<h2>msg값을 컴마로 불리해서 출력</h2>
	<c:forTokens var="s" items="${msg }" delims="," varStatus="i">
		<h3>${i.count }: ${s }</h3>
	</c:forTokens>

jstlArr.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
<%@ taglib uri="http://java.sun.com/jsp/jstl/fmt" prefix="fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.0/dist/css/bootstrap.min.css" rel="stylesheet">
<link href="https://fonts.googleapis.com/css2?family=Cute+Font&family=Diphylleia&family=Dokdo&family=Nanum+Brush+Script&family=Nanum+Gothic+Coding&family=Noto+Sans+KR&display=swap" rel="stylesheet">
<script src="https://code.jquery.com/jquery-3.7.0.js"></script>
<title>Insert title here</title>
</head>
<body>
	<c:forEach var="s" begin="1" end="10">
		[${s }]&nbsp;
	</c:forEach>
	<br>
	<%
		String mycolor []={"red","cadetblue","purple","green","orange","lightblue","gray"};
	%>
	
	<c:set var="mycolor" value="<%=mycolor %>"/>
	
	<table class="table table-bordered" style="width: 300px;">
	<caption align="top"><b>전체값 출력</b></caption>
		<tr>
			<th>index</th><th>count</th><th>color</th>
		</tr>
		<c:forEach var="a" items="${mycolor }" varStatus="i">
			<tr align="center">
				<td>${i.index }</td>
				<td>${i.count }</td>
				<td style="background-color: ${a}">${a }</td>
			</tr>
		</c:forEach>
	</table>
	
	<!-- 2~5번 -->
	<table class="table table-bordered" style="width: 300px;">
	<caption align="top"><b>일부값 출력</b></caption>
		<tr>
			<th>index</th><th>count</th><th>color</th>
		</tr>
		<c:forEach var="a" items="${mycolor }" varStatus="i" begin="2" end="5">
			<tr align="center">
				<td>${i.index }</td>
				<td>${i.count }</td>
				<td style="background-color: ${a}">${a }</td>
			</tr>
		</c:forEach>
	</table>
	
	<hr>
	<c:set var="msg" value="민규,성신,영환,성경,형준"/>
	${msg }<br>
	
	<h2>msg값을 컴마로 불리해서 출력</h2>
	<c:forTokens var="s" items="${msg }" delims="," varStatus="i">
		<h3>${i.count }: ${s }</h3>
	</c:forTokens>
</body>
</html>
profile
백엔드 개발자로서 성장해 나가는 성현이의 블로그~

0개의 댓글

Powered by GraphCDN, the GraphQL CDN