오늘이라도

[Servlet & JSP] 14. NCS 평가 과제, JSTL : core, format 본문

취업성공패키지 SW 개발자 교육/Web

[Servlet & JSP] 14. NCS 평가 과제, JSTL : core, format

upcake_ 2020. 5. 27. 09:20
반응형

https://github.com/upcake/Class_Examples

교육 중에 작성한 예제들은 깃허브에 올려두고 있습니다. 

gif 파일은 클릭해서 보는 것이 정확합니다.


- NCS 평가 과제 -

① 작성 조건

도서 정보 등록(jsp05) : BookMain_jsp.html → bookInsert.jsp → BookDAO.java → bookSearchAll.jsp

전체 목록 조회(jsp06) : BookMain_jsp.html → bookSearchAll.jsp

도서 정보 삭제(jsp07) : bookSearchAll.jsp → bookDelete.jsp → BookDAO.java → bookSearchAll.jsp

도서 정보 수정(jsp08, jsp09) : bookSearchAll.jsp → bookGetByIsbn.jsp → BookDAO.java → bookGetByIsbn.jsp → bookUpdate.jsp → BookDAO.java → bookUpdate.jsp → bookSearchAll.jsp

 

 

② 도서 정보 등록 : BookMain_jsp.html → bookInsert.jsp → BookDAO.java : insert2() → bookSearchAll.jsp

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>도서 정보 입력 화면</title>
<style type="text/css">
	* {
		margin: 0 auto;
		text-align: center;
	}
	
	fieldset {
		width: 400px;
	}

	legend {
		font-size: 1.5em;
		font-weight: bold;
	}

	td {
		padding: 5px;
	}
	
	.attribute {
		font-weight: bold;
	}
	
	.inputData {
		text-align: left;
	}
</style>

<script src="https://code.jquery.com/jquery-3.4.1.js"></script>
<script src="jquery-3.4.1.js"></script>
<script type="text/javascript">
	$(document).ready(function() {
		//정규 표현식
		var regIsbn = /^\d{3}[\-]\d{2}[\-]\d{4}[\-]\d{3}[\-]\d{1}$/ // 숫자 3글자 - 2글자 - 4글자 - 3글자 - 1글자
		//ISBN의 정규 표현식은 국립중앙도서관에서 소개하는 ISBN 구조와 ISBN 영문 위키를 참조하여 10진수 숫자로만 구성되게끔 정하였다. 
		//※ 국립중앙도서관 ISBN 구조 : http://seoji.nl.go.kr/front/service/isbn_info09.jsp
		//※ ISBN 영문 위키 : https://en.wikipedia.org/wiki/International_Standard_Book_Number
		
		//확인 버튼
		var isbnCheck = 0;
		var isbn_val = document.getElementById("isbn");
		$("#submit").click(function() {
			//ISBN 유효성 검사
			if(!regIsbn.test(isbn_val.value)) {
				alert("ISBN 형식이 잘못되었습니다." + "\nISBN은 숫자로 구성되어 있으며 XXX-XX-XXXX-XXX-X 형식으로 입력해주세요.");
				$("#isbn").val("");
				$("#isbn").focus();
				return false;
			}
		
			if(confirm("정말 입력하시겠습니까?")) {
				return true;
			} else {
				return false;
			}
		}); // submit click()
		
		//취소 버튼
		$("#cancel").click(function() {
			if(confirm("정말 취소하시겠습니까?")) {
				return true;
			} else {
				return false;
			}
		}); // cancel click()
	}); // ready()
</script>
</head>
<body>
	<fieldset>
		<legend>도서 정보 입력</legend>
		<form action="bookInsert.jsp" method="get">
			<table border="1">
				<tr>
					<td class="attribute">도서명</td>
					<td><input type="text" name="title" required="required" class="inputData" /></td>
				</tr>
				<tr>
					<td class="attribute">저&nbsp;&nbsp;&nbsp;자</td>
					<td><input type="text" name="auth" required="required" class="inputData" /></td>
				</tr>
				<tr>
					<td style="letter-spacing: 3px" class="attribute">ISBN</td>
					<td><input type="text" name="isbn" required="required" class="inputData" placeholder="xxx-xx-xxxx-xxx-x" id="isbn"/></td>
				</tr>
				<tr>
					<td class="attribute">출판사</td>
					<td><input type="text" name="comp" required="required" class="inputData" /></td>
				</tr>
				<tr>
					<td class="attribute">단&nbsp;&nbsp;&nbsp;가</td>
					<td><input type="number" name="cost" required="required" class="inputData" /></td>
				</tr>
				<tr>
					<td class="attribute">수&nbsp;&nbsp;&nbsp;량</td>
					<td><input type="number" name="su" required="required" class="inputData" /></td>
				</tr>
				<tr >
					<td colspan="3">
						<input type="submit" value="도서 정보 입력" id="submit" />
						<input type="reset" value="입력 정보 취소" id="cancel"/>
						<input type="button" value="도서 목록 조회" onclick="location.href='bookSearchAll.jsp'"/>
					</td>
				</tr>
			</table>
		</form>
	</fieldset>
</body>
</html>

▲BookMain_jsp.html : 도서 정보 입력 화면

bookInsert.jsp : 도서 정보 입력 기능 작동

<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<% request.setCharacterEncoding("utf-8"); %>
<jsp:useBean id="dto" class="com.hanul.study.BookDTO">
	<jsp:setProperty property="*" name="dto"/>
</jsp:useBean>
<jsp:useBean id="dao" class="com.hanul.study.BookDAO" />
<% 
int succ = dao.insert2(dto);
if(succ > 0) {
	out.println("<script>alert('도서 정보 입력 성공!');");
	out.println("location.href='bookSearchAll.jsp'; </script>");
} else {
	out.println("<script>alert('도서 정보 입력 실패!');");
	out.println("location.href='bookSearchAll.jsp'; </script>");
}
%>

BookDAO.java : insert2() : 도서 정보 입력 기능

	//도서 정보 등록 메서드 ②
	public int insert2(BookDTO dto) {
		conn = getConn();
		String sql ="INSERT INTO book VALUES(?, ?, ?, ?, ?, ?, ?)";
		int succ = 0;
		try {
			ps = conn.prepareStatement(sql);
			ps.setString(1, dto.getTitle());
			ps.setString(2, dto.getAuth());
			ps.setString(3, dto.getIsbn());
			ps.setString(4, dto.getComp());
			ps.setInt(5, dto.getCost());
			ps.setInt(6, dto.getSu());
			ps.setInt(7, dto.getCost() * dto.getSu());
			succ = ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("insert() Exception");
		} finally {
			dbClose();
		}
		return succ;
	} //insert2()

bookSearchAll.jsp : 도서 목록 조회 화면

<%@page import="com.hanul.study.BookDTO"%>
<%@page import="java.util.ArrayList"%>
<%@page import="com.hanul.study.BookDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>

<%
BookDAO dao = new BookDAO();
ArrayList<BookDTO> list = dao.getAllList();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>도서 목록 조회</title>
<style type="text/css">
	* {
		margin: 0 auto;
	}
			
	fieldset {
			 width: 1000px;
	}
	
	legend {
		 font-size: 1.5em;
		 font-weight: bold;
	}

	td, th {
		 padding: 5px;
	}
</style>
</head>
<body>
	<fieldset>
		<legend>도서 목록 조회</legend>
		<table border='1'>
			<tr>
				<th>도서명</th>
				<th>저&nbsp;&nbsp;&nbsp;자</th>
				<th style='letter-spacing: 3px'>ISBN</th>
				<th>출판사</th>
				<th>단&nbsp;&nbsp;&nbsp;가</th>
				<th>수&nbsp;&nbsp;&nbsp;량</th>
				<th>가&nbsp;&nbsp;&nbsp;격</th>
				<th>삭&nbsp;&nbsp;&nbsp;제</th>
				<th>수&nbsp;&nbsp;&nbsp;정</th>
			</tr>
			<% for (BookDTO dto : list) { %>
				<tr align='center'>
					<td><%= dto.getTitle() %></td>
					<td><%= dto.getAuth() %></td>
					<td><%= dto.getIsbn() %></td>
					<td><%= dto.getComp() %></td>
					<td><%= dto.getCost() %></td>
					<td><%= dto.getSu() %></td>
					<td><%= dto.getPrice() %></td>
					<td><a href="bookDelete.jsp?isbn=<%= dto.getIsbn()%>" style= "text-decoration:none">삭&nbsp;&nbsp;&nbsp;제</a></td>
					<td><a href="bookGetByIsbn.jsp?isbn=<%= dto.getIsbn()%>" style= "text-decoration:none">수&nbsp;&nbsp;&nbsp;정</a></td>
				</tr>
			<% } %>
			<tr>
				<td colspan='9' align='center'><input type="button" value="도서 정보 입력" onclick="location.href='BookMain_jsp.html'"/></td>
			</tr>
		</table>
	</fieldset>
</body>
</html>

 

 

② 전체 목록 조회 : BookMain_jsp.html → bookSearchAll.jsp

 

 

③ 도서 정보 삭제 : bookSearchAll.jsp → bookDelete.jsp → BookDAO.java : delete() → bookSearchAll.jsp

<%@page import="com.hanul.study.BookDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String isbn = request.getParameter("isbn");
BookDAO dao = new BookDAO();
int succ = dao.delete(isbn);

if(succ > 0) {
	out.println("<script> alert('도서 정보 삭제 성공!');");
	out.println("location.href = 'bookSearchAll.jsp'; </script>");
} else {
	out.println("<script> alert('도서 정보 삭제 실패!');");
	out.println("location.href = 'bookSearchAll.jsp'; </script>");
}
%>

▲bookDelete.jsp : 도서 정보 삭제 기능 작동

BookDAO.java : delete() : 도서 정보 삭제 기능

	//도서 정보 삭제 메서드
	public int delete(String isbn) {
		conn = getConn();
		String sql = "DELETE FROM book WHERE isbn = ?";
		int succ = 0;
		try {
			ps = conn.prepareStatement(sql);
			ps.setString(1, isbn);
			succ = ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("delete() Exception");
		} finally {
			dbClose();
		}
		return succ;
	} //delete()

 

 

④ 도서 정보 수정 : bookSearchAll.jsp → bookGetByIsbn.jsp → BookDAO.java : getByIsbn() → bookGetByIsbn.jsp → bookUpdate.jsp → BookDAO.java : update() → bookUpdate.jsp → bookSearchAll.jsp

 

<%@page import="com.hanul.study.BookDTO"%>
<%@page import="com.hanul.study.BookDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
request.setCharacterEncoding("utf-8");
String isbn = request.getParameter("isbn");
BookDAO dao = new BookDAO();
BookDTO dto = dao.getByIsbn(isbn);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>도서 정보 수정 화면</title>
<style type="text/css">
	* {
		margin: 0 auto;
		text-align: center;
	}
	
	fieldset {
		width: 400px;
	}

	legend {
		font-size: 1.5em;
		font-weight: bold;
	}

	td {
		padding: 5px;
	}
	
	.attribute {
		font-weight: bold;
	}
	
	.inputData {
		text-align: left;
		background-color: lightyellow;
	}
</style>
<script type="text/javascript">
	function fnUpdate() {
		if(confirm("정말 수정하시겠습니까?")) {
			return true;
		}		
		return false;
	}
	
	function fnReset() {
		if(confirm("정말 기존 정보로 복구하시겠습니까?")) {
			return true;
		}
		return false;
	}
</script>
</head>
<body>
	<fieldset>
		<legend>도서 정보 수정</legend>
		<form action="bookUpdate.jsp" method="get" onsubmit="return fnUpdate()" onreset="return fnReset()">
		<input type="hidden" name="isbn" value="<%=dto.getIsbn() %>"/>
			<table border="1">
				<tr>
					<td class="attribute">도서명</td>
					<td><input type="text" name="title" required="required" class="inputData" value="<%=dto.getTitle() %>" /></td>
				</tr>
				<tr>
					<td class="attribute">저&nbsp;&nbsp;&nbsp;자</td>
					<td><input type="text" name="auth" required="required" class="inputData" value="<%=dto.getAuth() %>" /></td>
				</tr>
				<tr>
					<td style="letter-spacing: 3px" class="attribute">ISBN</td>
					<td><input type="text" name="isbn_fake" required="required" class="inputData2" disabled="disabled" value="<%=dto.getIsbn() %>" /></td>
				</tr>
				<tr>
					<td class="attribute">출판사</td>
					<td><input type="text" name="comp" required="required" class="inputData" value="<%=dto.getComp() %>" /></td>
				</tr>
				<tr>
					<td class="attribute">단&nbsp;&nbsp;&nbsp;가</td>
					<td><input type="number" name="cost" required="required" class="inputData" value="<%=dto.getCost() %>" /></td>
				</tr>
				<tr>
					<td class="attribute">수&nbsp;&nbsp;&nbsp;량</td>
					<td><input type="number" name="su" required="required" class="inputData" value="<%=dto.getSu() %>" /></td>
				</tr>
				<tr >
					<td colspan="3">
						<input type="submit" value="도서 정보 수정" id="submit" />
						<input type="reset" value="기존 정보 복구" id="cancel"/>
						<input type="button" value="도서 목록 조회" onclick="location.href='bookSearchAll.jsp'"/>
					</td>
				</tr>
			</table>
		</form>
	</fieldset>
</body>
</html>

bookGetByIsbn.jsp : 도서 정보 수정 화면

 

 

	//도서 isbn 검색 메서드
	public BookDTO getByIsbn(String isbn) {
		conn = getConn();
		String sql = "SELECT * FROM book WHERE isbn = ?";
		BookDTO dto = null;
		try {
			ps = conn.prepareStatement(sql);
			ps.setString(1, isbn);
			rs = ps.executeQuery();
			if (rs.next()) {
				String title = rs.getString("title");
				String auth = rs.getString("auth");
				isbn = rs.getString("isbn");
				String comp = rs.getString("comp");
				int cost = rs.getInt("cost");
				int su = rs.getInt("su");
				int price = rs.getInt("price");
				dto = new BookDTO(title, auth, isbn, comp, cost, su, price);
			}
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("getByIsbn() Exception!!!");
		} finally {
			dbClose();
		}
		return dto;
	} //getByIsbn()

▲BookDAO : getByIsbn() : 도서 isbn 검색 메서드

 

<%@page import="com.hanul.study.BookDTO"%>
<%@page import="com.hanul.study.BookDAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%request.setCharacterEncoding("utf-8"); %>
<jsp:useBean id="dto" class="com.hanul.study.BookDTO">
	<jsp:setProperty property="*" name="dto"/>
</jsp:useBean>

<%
BookDAO dao = new BookDAO();
int succ = dao.update(dto);

if (succ > 0) {
	out.println("<script> alert('도서 정보 수정 성공');");
	out.println("location.href = 'bookSearchAll.jsp'; </script>");
} else {
	out.println("<script> alert('도서 정보 수정 실패');");
	out.println("location.href = 'bookSearchAll.jsp'; </script>");
}
%>

▲bookUpdate.jsp : 도서 정보 수정 기능 작동

BookDAO.java : update() : 도서 정보 수정 기능

	//도서 정보 수정 메서드
	public int update(BookDTO dto) {
		conn = getConn();
		String sql = "UPDATE book SET title = ?, auth = ?, comp = ?, cost = ?, su = ?, price = ? WHERE isbn = ?";
		int succ = 0;
		try {
			ps = conn.prepareStatement(sql);
			ps.setString(1, dto.getTitle());
			ps.setString(2, dto.getAuth());
			ps.setString(3, dto.getComp());
			ps.setInt(4, dto.getCost());
			ps.setInt(5, dto.getSu());
			ps.setInt(6, dto.getCost() * dto.getSu());
			ps.setString(7, dto.getIsbn());
			succ = ps.executeUpdate();
		} catch (Exception e) {
			e.printStackTrace();
			System.out.println("update() Exception!!!");
		} finally {
			dbClose();
		}
		return succ;
	} //update()

 

 

 - JSTL : core, format -

★ JSTL[JSP Standard Tag Library]

  ○ JSTL 라이브러리 설치

    - tomcat.apache.org → Download → Taglibs → Standard 1.1.2 다운로드

    - jstl.jar, standard.jar 복사

    - WebContent\WEB-INF\lib 붙여 넣기

  ○ JSTL Tag 종류 : JSP 문서 상단에 지시자를 작성할 것

    - 기본 프로그래밍 Tag(변수, 배열, if, for, switch~case 등)

      ▶ core <%@ taglib prefix = "c" uri = "http://java.sun.com/jsp/jstl/core" %>

    - 포맷팅 Tag(날짜, 시간, 통화 기호 등 표시 형식)

      ▶ format <%@ taglib prefix = "fmt" uri = "http://java.sun.com/jsp/jstl/fmt" %>

    - JSTL 제공되는 함수(메서드)

      ▶ function <%@ taglib prefix = "fn" uri = "http://java.sun.com/jsp/jstl/

 

① core : 변수(var, value), 조건문(if test, choose when test otherwise), 반복문(forEach)

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!-- JSTL core문을 사용하기 위해서는 반드시 문서 상단에 기술 -->
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
1. 기본 프로그래밍 Tag(변수, 배열, if, for, switch-case 등) ▶ core<br />
<%
int num = 100;
%>
JAVA num : <%=num %><br />

<%-- JSTL 변수 선언 : <c:set ~~> --%>
<c:set var="su1" value="200" />
JSTL su1 : ${su1 }<br />

<%-- JAVA num값을 JSTL su2 할당 --%>
<c:set var="su2" value="<%=num %>" />
JSTL su2 : ${su2 }<br />

<%-- JSTL su1 값과 su2 값을 더한 값 : result --%>
<c:set var="result" value="${su1 + su2 }" />
JSTL result : ${result }
</body>
</html>

▲jsp29.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>JSP 30</title>
</head>
<body>
<!-- JSTL core 변수를 선언한 후 jsp31.jsp로 넘기자 : forward() -->
<c:set var="code" value="abc001" scope="request" />
<c:set var="name" value="컴퓨터" scope="request" />
<c:set var="price" value="5000000" />
<jsp:forward page="jsp31.jsp" />
</body>
</html>

▲jsp30.jsp

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
</head>
<body>
코드 : ${code }<br />
제품명 : ${name }<br />
가격 : ${price }
</body>
</html>

 

▲jsp31.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>Insert title here</title>
</head>
<body>
<!-- jsp32.jsp?num1=100&num2=50 -->
첫 번째 수 : ${param.num1 }<br />
두 번째 수 : ${param.num2 }<br />

<%--
	<c:if test="조건식">실행문</c:if>
 --%>
 최댓값 : <c:if test="${param.num1 - param.num2 > 0}">${param.num1 }</c:if>
 		  <c:if test="${param.num1 - param.num2 < 0}">${param.num2 }</c:if>
<br /><br />
 최솟값 : <c:if test="${param.num1 - param.num2 > 0}">${param.num2 }</c:if>
 		  <c:if test="${param.num1 - param.num2 < 0}">${param.num1 }</c:if>
 <br />
</body>
</html>

▲jsp32.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>JSP 33</title>
</head>
<body>
<!-- jsp33.jsp?num=1 	//jsp33.jsp?num=2 	//jsp33.jsp?num=3  -->
<%
int num = Integer.parseInt(request.getParameter("num"));
if(num == 1) {
	out.println("처음 뵙겠습니다. (java:if)");	
} else if(num == 2) {
	out.println("안녕하세요. (java:if)");
} else {
	out.println("반갑습니다. (java:if)");
}
%>
<br/><br/>
<c:if test="${param.num == 1 }" >처음 뵙겠습니다. (c:if)</c:if>
<c:if test="${param.num == 2 }" >안녕하세요. (c:if)</c:if>
<c:if test="${param.num == 3 }" >반갑습니다. (c:if)</c:if>
<br/><br/>

<%--
JAVA : switch(비교값) case 기준값 default
JSTL core : <c:choose>
				<c:when test="조건식">실행문</c:when>
				<c:when test="조건식">실행문</c:when>
				<c:otherwise>실행문</c:otherwise>
			</c:choose>
--%>

<%
switch(num) {
	case 1 :
		out.println("처음 뵙겠습니다. (java:switch)");
		break;
	case 2 :
		out.println("안녕하세요. (java:switch)");
		break;
	default : 
		out.println("반갑습니다. (java:switch)");
		break;
}
%>
<br/><br/>
<c:choose>
	<c:when test="${param.num == 1 }">처음 뵙겠습니다. (c:choose)</c:when>
	<c:when test="${param.num == 2 }">안녕하세요. (c:choose)</c:when>
	<c:otherwise>반갑습니다. (c:choose)</c:otherwise>
</c:choose>
</body>
</html>

▲jsp33.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>JSP 34</title>
</head>
<body>
<%--
○ JAVA 반복문 : for, while, do~while
○ JSTL 반복문 : <c:forEach>실행문</c:forEach>
	▲ <c:forEach var="반복변수명" begin="초기값" end="최종값" step="증감값">실행문</c:forEach>
 --%>
○ JAVA 반복문(for)<br />
<%
for(int i = 1; i <= 7; i++) {
	out.println("<font size=" + i + ">안녕하세요</font><br />");
}
%>
<br /><br />

○ JSTL 반복문(c:forEach)<br />
<c:forEach var="i" begin="1" end="7"> <!-- step의 값이 1이라면 생략가능하다. -->
	<font size="${i }" >반갑습니다</font><br />
</c:forEach>
<br /><br />
<c:forEach var="i" begin="1" end="7" step="2"> <!-- step의 값이 1이라면 생략가능하다. -->
	<font size="${i }" >반갑습니다</font><br />
</c:forEach>
</body>
</html>

▲jsp34.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
String[] fruit = {"사과", "멜론", "오렌지", "바나나", "파인애플"};
pageContext.setAttribute("fruit", fruit);	//현재 페이지에서 사용할 바인딩 객체 생성
//fruit가 다른 페이지에서 넘겨받았으면 바인딩 객체를 생성할 필요가 없으나
//현재 페이지에서 만들었으므로 EL 표기법에서 사용하기 위해 객체를 생성할 필요가 있다.
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 35</title>
</head>
<body>
○ JAVA 반복문(배열)<br />
<ul>
	<%
		for(int i = 0; i < fruit.length; i++) {
			out.println("<li>" + fruit[i] + "</li>");
		}
	%>
</ul>

<%--
JSTL 반복문 : <c:forEach>실행문</c:forEach>
	▶ <c:forEach var="반복변수명" items="${배열명}" >실행문</c:forEach>
 --%>
○ JSTL 반복문(배열)<br />
<ul>
	<c:forEach var="i" items="${fruit }">
		<li>${i }</li>
	</c:forEach>
</ul>
</body>
</html>

▲jsp35.jsp

 

<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
ArrayList<String> list = new ArrayList<>();
list.add("사과");
list.add("멜론");
list.add("오렌지");
list.add("바나나");
list.add("파인애플");

pageContext.setAttribute("list", list);	//현재 페이지에서 EL 문법에 활용 가능
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 36</title>
</head>
<body>
○ JAVA for<br />
<ul>
	<%
		for(int i = 0; i < list.size(); i++) {
			out.println("<li>" + list.get(i) + "</li>");
		}
	%>
</ul>
<hr />
○ JAVA forEach<br />
<ul>
	<%
		for(String str : list) {
			out.println("<li>" + str + "</li>");		}
	%>
</ul>
<hr />
○ EL 표기법<br />
<ul>
	<li>${list[0] }</li>
	<li>${list[1] }</li>
	<li>${list[2] }</li>
	<li>${list[3] }</li>
	<li>${list[4] }</li>
</ul>
<hr />
○ JSTL core<br />
<ul>
	<c:forEach var="i" items="${list }">
		<li>${i }</li>
	</c:forEach>
</ul>
</body>
</html>

▲jsp36.jsp

 

<%@page import="com.hanul.study.MemberDTO"%>
<%@page import="java.util.ArrayList"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%
ArrayList<MemberDTO> list = new ArrayList<>();
list.add(new MemberDTO("홍길동", "hong", "1234", 11, "서울특별시", "010-1111-1111"));
list.add(new MemberDTO("홍길동", "hong", "1234", 22, "서울특별시", "010-1111-1111"));
list.add(new MemberDTO("홍길동", "hong", "1234", 33, "서울특별시", "010-1111-1111"));
list.add(new MemberDTO("홍길동", "hong", "1234", 44, "서울특별시", "010-1111-1111"));
list.add(new MemberDTO("홍길동", "hong", "1234", 55, "서울특별시", "010-1111-1111"));

pageContext.setAttribute("list", list);
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 37</title>
</head>
<body>
○ JAVA for<br />
<ul>
	<%
		for(int i = 0; i < list.size(); i++) {
			out.println("<li>" + list.get(i).getIrum());
			out.println(list.get(i).getId());
			out.println(list.get(i).getPw());
			out.println(list.get(i).getAge());
			out.println(list.get(i).getAddr());
			out.println(list.get(i).getTel() + "</li>");
		}
	%>
</ul>
<hr />
○ JAVA forEach<br />
<ul>
	<%
		for(MemberDTO dto : list) {
			out.println("<li>");
			out.println(dto.getIrum());
			out.println(dto.getId());
			out.println(dto.getPw());
			out.println(dto.getAge());
			out.println(dto.getAddr());
			out.println(dto.getTel());
			out.println("</li>");
		}
	%>
</ul>
<hr />
○ EL 표기법<br />
<ul>
	<li>${list[0].irum } ${list[0].id } ${list[0].pw } ${list[0].age } ${list[0].addr } ${list[0].tel }</li>
	<li>${list[1].irum } ${list[1].id } ${list[1].pw } ${list[1].age } ${list[1].addr } ${list[1].tel }</li>
	<li>${list[2].irum } ${list[2].id } ${list[2].pw } ${list[2].age } ${list[2].addr } ${list[2].tel }</li>
	<li>${list[3].irum } ${list[3].id } ${list[3].pw } ${list[3].age } ${list[3].addr } ${list[3].tel }</li>
	<li>${list[4].irum } ${list[4].id } ${list[4].pw } ${list[4].age } ${list[4].addr } ${list[4].tel }</li>
</ul>
<hr />
○ JSTL core<br />
<ul>
	<c:forEach var="i" items="${list }">
		<li>${i.irum } ${i.id  } ${i.pw  } ${i.age  } ${i.addr } ${i.tel  }</li>
	</c:forEach>
</ul>
</body>
</html>

▲jsp37.jsp

 

 

② format : 날짜, 시간 표시(formatDate) / 숫자, 통화, 백분율 표시(formatNumber)

<%@page import="java.text.SimpleDateFormat"%>
<%@page import="java.util.Date"%>
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 38</title>
</head>
<body>
<c:set var="date" value="<%=new Date() %>" />
<h3>날짜와 시간의 기본적인 표시 : ${date }</h3>
○ 오늘의 날짜 : <fmt:formatDate value="${date }" type="date" /><br />
○ 현재의 시각 : <fmt:formatDate value="${date }" type="time" /><br />
○ 날짜와 시각 : <fmt:formatDate value="${date }" type="both" /><br />
○ Short : <fmt:formatDate value="${date }" type="both" dateStyle="short" timeStyle="short" /><br />
○ Medium : <fmt:formatDate value="${date }" type="both" dateStyle="medium" timeStyle="medium" /><br />
○ Long : <fmt:formatDate value="${date }" type="both" dateStyle="long" timeStyle="long" /><br />
○ Full : <fmt:formatDate value="${date }" type="both" dateStyle="full" timeStyle="full" /><br />
○ Pattern1 : <fmt:formatDate value="${date }" type="date" pattern="yyyy년 MM월 dd일(E)" /><br />
○ Pattern2 : <fmt:formatDate value="${date }" type="time" pattern="(a) hh시 mm분" /><br />
<br /><hr /><br />
<%
Date now = new Date();
SimpleDateFormat sdf = new SimpleDateFormat("yyyy년 MM월 dd일 HH시 mm분 ss초");
%>
○ JAVA : <%=now %><br />
○ JAVA Format : <%=sdf.format(now) %>
</body>
</html>

▲jsp38.jsp

 

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core" %>
<%@ taglib prefix="fmt" uri="http://java.sun.com/jsp/jstl/fmt" %>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>JSP 39</title>
</head>
<body>
<c:set var="num" value="123456789" />
<h3>숫자 포맷 : ${num }</h3>
○ 형식1 : <fmt:formatNumber value="${num }" groupingUsed="true"/><br />
○ 형식2 : <fmt:formatNumber value="${num }" groupingUsed="false"/><br />
○ 형식3 : <fmt:formatNumber value="${num }" pattern="#,##0" /><br />
○ 형식4 : <fmt:formatNumber value="${num }" pattern="#,##0개" /><br />

<h3>기타 포맷 : 통화, 백분율</h3>
<%--통화 기호를 입력할 경우 특수문자 : ㄹ → 한자 --%>
○ 금액1 : <fmt:formatNumber value="${num }" type="currency" currencySymbol="₩"/><br />
○ 금액2 : <fmt:formatNumber value="${num }" type="currency" currencySymbol="$"/><br />
○ 금액3 : <fmt:formatNumber value="${num }" pattern="₩#,##0원" /><br />
○ 백분율1 : <fmt:formatNumber value="0.123" type="percent" /><br />
○ 백뷴율2 : <fmt:formatNumber value="0.123" pattern="0.00%" /><br />
</body>
</html>

▲jsp39.jsp

반응형