JAVA개념&실습

WEB : [0607] JSTL 코어 실습

u_SZero 2023. 6. 14. 23:53

! 배워가고 있는 주인장이 쓴 글이니 정보의 정확성에 유의하시기 바랍니다 !


WebApp22


Gugudan.jsp

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<% 
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Gugudan.jsp</title>
<link rel="stylesheet" type="text/CSS" href="css/main.css">
<!-- <style type="text/css">
	body {text-align: center;}
</style> -->
</head>
<body>

<!-- 원하는 단을 사용자로부터 입력받아 해당 구구단을 출력하는 JSP 페이지를 구성한다. 
     단, JSTL Core if 문과 forEach 구문을 활용한다. -->

<div>
	<h1>JSTL 코어(Core)를 활용한 구구단 출력</h1>
	<hr>
</div>

<div>
	<form action="">
		원하는 단 입력 <input type="text" name="dan" class="txt"><br><br>
		
		<button type="submit" class="btn">결과 확인</button>
	</form>
</div>

<div>
	<!-- 결과 처리 --> 
	<%--내가
	<c:if test="${!empty param.dan }"> 
		[ ${param.dan } 단 ]<br><br>
		<c:forEach var="a" begin="1" end="9" step="1">
			${param.dan} * ${a} = ${param.dan*a }<br>
		</c:forEach>
	</c:if> 
	--%>
	
	<c:if test="${!empty param.dan }">
	<ul>
		<c:forEach var="su" begin="1" end="9" step="1">
		<li>
			${param.dan} * ${su } = ${param.dan*su }
		</li>
		</c:forEach>
	</ul>
	</c:if>
</div>


</body>
</html>

 

 

Test8.jsp

: JSTL 코어(Core) choose문 실습 (3과 4의 배수인지 확인하는 실습)

 

<c:if test=" "></c:if> → if문이지만 else문이 없음

 

이를 보완하기 위해

 

<c:choose>

    <c:when test="if문1 ">                   

    </c:when> 

    <c:when test="if문2">                 

    </c:when> 

    <c:otherwise test="else문">

    </c:otherwise>

</c:choose>

 

이용.

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<% 
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test8.jsp</title>
<link rel="stylesheet" type="text/CSS" href="css/main.css">
</head>
<body>

<div>
	<h1>JSTL 코어(Core) choose문 실습</h1>
	<h2>배수 확인하기</h2>
	<hr>
</div>

<div>
	<form>
		정수 <input type="text" name="su" class="txt"><br><br>
		
		<button type="submit" class="btn">결과 확인</button>
	</form>
</div>
<br>

<div>
	<!-- 결과 확인 -->
	<c:if test="${!empty param.su }">
		<%-- ${param.su } --%>
		
		<%-- c:choose ~ / c:choose --%>
		<%--JSTL Core 에서 if ~ else 를 대신할 수 있는 구문 --%>
		
		<c:choose>
		
			<c:when test="${param.su%3==0 && param.su%4==0 }">
				<p>${param.su }은(는) 3과 4의 배수~!!!</p>
			</c:when>
			
			<c:when test="${param.su%3==0 }">
				<p>${param.su }은(는) 3의 배수~!!!</p>
			</c:when>
			
			<c:when test="${param.su%4==0 }">
				<p>${param.su }은(는) 4의 배수~!!!</p>
			</c:when>
			
			<%-- else --%>
			<c:otherwise>
				<p>${param.su }은(는) 3과 4의 배수가 아님~!!!</p>
			</c:otherwise>
			
		</c:choose>
		
	</c:if>
</div>

</body>
</html>

 

 

Test9.jsp

: JSTL 코어(Core) import문 실습

 

『c:import』는 URL 처리에 관여하며, URL을 활용하여 다른 자원이 결과를 삽입할 때 사용한다.

 

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<% 
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Test9.jsp</title>
<link rel="stylesheet" type="text/CSS" href="<%=cp %>/css/main.css">
</head>
<body>

<div>
	<h1>JSTL 코어(Core) import문 실습</h1>
	<hr>
</div>

<div>
	<p>『c:import』는 URL 처리에 관여하며,
	URL을 활용하여 다른 자원이 결과를 삽입할 때 사용한다.</p>
</div>
<br>

<!-- 변수 지정 -->
<c:set var="url" value="Gugudan.jsp"></c:set>	

<!-- import 를 수행하여 해당 페이지가 필요로하는 파라미터 넘기기 -->
<c:import url="${url }" var="impt">
	<c:param name="dan" value="7"></c:param>
</c:import>

<!-- 결과 화면 출력 -->
<c:out value="${impt }"></c:out>
<!-- → 결과 화면 출력 과정에서 HTML 코드를 그대로 출력하는 구문 -->
<!--    이 때, 『escapeXml』 속성의 기본값(default)은 true 로 설정되어 있다. -->

<!-- 결과 화면 출력 -->
<c:out value="${impt }" escapeXml="false"></c:out>

</body>
</html>

 

 


 

MemberInsertForm.jsp

: 5명의 정보 입력 받기

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<% 
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MemberInsertForm.jsp</title>
<link rel="stylesheet" type="text/CSS" href="<%=cp %>/css/main.css">

<style type="text/css">
	td {text-align: center;}
</style>

</head>
<body>

<div>
	<h2>JSTL 코어(Core)를 활용한 회원정보 입력</h2>
	<hr>
</div>

<!-- 내가 -->
<%-- <div>
	<form action="MemberInsert.jsp" method="post">
		<!-- (이름, 전화번호, 주소) * 5명 분 입력 폼 구성 -->
		<!-- → 각각의 입력 컨트롤 15개 구성 -->
		<!-- → submit 액션 처리 -->
		<c:forEach var="su" begin="1" end="5" step="1">
			<h3>${su }번 회원 정보 입력</h3>
			이름 <input type="text" name="name${su }" class="txt">
			전화번호 <input type="text" name="tel${su }" class="txt">
			주소 <input type="text" name="addr${su }" class="txt">
			<br><br>
		</c:forEach>
		<br><br>
		<button type="submit" name="btn" class="btn" style="font-weight:bold; font-size:12pt;">입력</button>
	</form>
</div> --%>


<!-- 함께 -->
<div>
	<form action="MemberInsert.jsp" method="post">
		<!-- (이름, 전화번호, 주소) * 5명 분 입력 폼 구성 -->
		<!-- → 각각의 입력 컨트롤 15개 구성 -->
		<!-- → submit 액션 처리 -->
		<table class="table">
			<tr>
				<th>이름
					<td>
						<!-- <input type="text" name="name1">
						<input type="text" name="name2">
						<input type="text" name="name3">
						<input type="text" name="name4">
						<input type="text" name="name5"> -->
						<c:set var="i" value="1"></c:set>
						<c:forEach var="a" begin="1" end="5" step="1">
							<%-- <input type="text" name="name${a }"> --%>
							<input type="text" name="name${i }">
							<c:set var="i" value="${i+1 }"></c:set>
						</c:forEach>
					</td>
				</th>
			</tr>
			<tr>
				<th>전화번호
					<td>
						<!-- <input type="text" name="tel1">
						<input type="text" name="tel2">
						<input type="text" name="tel3">
						<input type="text" name="tel4">
						<input type="text" name="tel5"> -->
						<c:set var="i" value="1"></c:set>
						<c:forEach var="a" begin="1" end="5" step="1">
							<input type="text" name="tel${i }">
							<c:set var="i" value="${i+1 }"></c:set>
						</c:forEach>
					</td>
				</th>
			</tr>
			<tr>
				<th>주소
					<td>
						<!-- <input type="text" name="addr1">
						<input type="text" name="addr2">
						<input type="text" name="addr3">
						<input type="text" name="addr4">
						<input type="text" name="addr5"> -->
						<c:set var="i" value="1"></c:set>
						<c:forEach var="a" begin="1" end="5" step="1">
							<input type="text" name="addr${i }">
							<c:set var="i" value="${i+1 }"></c:set>
						</c:forEach>
					</td>
				</th>
			</tr>
			<tr>
				<td colspan="5">
					<button type="submit" class="btn" style="width: 100%;">입력</button>
				</td>
			</tr>
		</table>
	</form>
</div>

</body>
</html>

 

 

MemberInsert.jsp

: ArrayList에 5명의 정보 각각의 MemberDTO객체로 저장하여 setAttribute 수행

<%@page import="java.util.ArrayList"%>
<%@page import="com.test.MemberDTO"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<% 
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
%>

<%
	// MemberInsert.jsp
	
	// 5명 분 데이터 수신 → 객체 구성 → 자료구조 활용 → setAttribute() → MemberList.jsp로 넘김
	//                       MemberDTO
	
	ArrayList<MemberDTO> lists = new ArrayList<MemberDTO>();

	for(int i=1; i<6; i++)	// 1 2 3 4 5
	{
		MemberDTO dto = new MemberDTO(request.getParameter("name"+i), request.getParameter("tel"+i), request.getParameter("addr"+i));
		lists.add(dto);
	}
    
    request.setAttribute("lists", lists); 
%>

<jsp:forward page = "MemberList.jsp"></jsp:forward>
<!-- request.dispatcher... 사용해도 됨. -->

 

 

MemberList.jsp

: EL 을 이용하여 request를 통해 넘겨받아온 lists의 각각의 객체를 꺼내서 테이블 구성

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<% 
	request.setCharacterEncoding("UTF-8");
	String cp = request.getContextPath();
%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>MemberList.jsp</title>
<link rel="stylesheet" type="text/CSS" href="css/main.css">
</head>
<body>

<div>
	<h1>JSTL 코어(Core) 문제 해결</h1>
	<h2>회원 명단 출력</h2>
	<hr>
</div>

<%-- <div>
	<!-- 5명 분의 이름, 전화번호, 주소 출력 -->
	<c:forEach var="dto" items="${lists }">
		이름 : ${dto.name }
		전화번호 : ${dto.tel }
		주소 : ${dto.addr }
		<br>
	</c:forEach>
</div> --%>

<div>
	<table>
		<tr>
			<th>이름</th>
			<th>전화번호</th>
			<th>주소</th>
		</tr>
		
		<c:forEach var="dto" items="${lists }">
		<tr>
			<td>${dto.name }</td>
			<td>${dto.tel }</td>
			<td>${dto.addr }</td>
		</tr>
		</c:forEach>
	</table>
</div>

</body>
</html>

 


! 배워가고 있는 주인장이 쓴 글이니 정보의 정확성에 유의하시기 바랍니다 !