Notice
Recent Posts
Recent Comments
Link
«   2025/04   »
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
Archives
Today
Total
관리 메뉴

Everything has an expiration date

[JSP] 20231221 [JSTL 프로그램 소스] - Test7, Test8, Gugudan, Test9, MemberDTO, MemberInsertForm, MemberInsert 본문

[JSP & Servlet]/Program source (JSP & Servlet)

[JSP] 20231221 [JSTL 프로그램 소스] - Test7, Test8, Gugudan, Test9, MemberDTO, MemberInsertForm, MemberInsert

Jelly-fish 2023. 12. 26. 01:57

 

WebApp22


 

【EL 테스트 및 관찰】 - Test7.jsp (EL을 이용한 지수승 구하기)

 

 

Test7.jsp


Test7.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>Test7.jsp</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>

<div>
	<h1>JSTL 코어(Core) set문 실습</h1>
	<h2>지수승 구하기</h2>
	<hr>
</div>


<div>
	<p>『c:set』은 JSP 의 setAttribute() 와 같은 역할을 수행한다. </p>
	<p>(page | request | session | application)
		범위의 변수(속성)를 설정한다.</p>
		
	<p>『c:remove』는 JSP 의 removeAttribute() 와 같은 역할을 수행한다. </p>
	<p>(page | request | session | application)
		범위의 변수(속성)를 제거한다.</p>
	<p>scope 속성이 생략될 경우 기본 값(default)은 page이다.</p>
</div>

<div>
	<!-- 수신처는 자기 자신~!!! -->
	<form method="post">
		정수1
		<input type="text" name="su1" class="txt"><br>
		정수2
		<input type="text" name="su2" class="txt"><br><br>
		
		<button type="submit" class="btn">결과 확인</button>
	</form>
</div>

<div>
	<!-- request.getParameter("su1")로 수행한 결과값이 존재할 경우 처리 -->
	
	<c:if test="${!empty param.su1 }">
	
		<%-- 『<c:set var="변수" value="값"></c:set>』 --%>
		<%--  → 변수의 값을 지정하는 구문 --%>
		<%--  → 해당 스코프에 지정된 변수가 존재하지 않을 경우
				 변수를 새로 선언하여 초기화 하는 기능을 수행하게 되며
				 해당 스코프에 이미 지정된 변수가 존재할 경우
				 그 변수의 값을 다시 초기화하는(덮어쓰기) 효과가 적용된다. --%>
		
		
		<c:set var="result" value="1"></c:set>
		
		<c:forEach var="a" begin="1" end="${param.su2 }" step="1">
			
			<c:set var="result" value="${result * param.su1 }"></c:set>
			<p>${param.su1 } ^ ${a } = ${result }</p>
			
		</c:forEach>
		
	</c:if>
</div>

</body>
</html>

 


 

【EL 테스트 및 관찰】 - Test8.jsp (EL choose문 실습) 

 

 

EL - choose문 형식

 

<c:choose>
	<c:when test="${조건식1 }">
    	보여질 내용1 (if)
    </c:when>
    <c:when test="${조건식2 }">
    	보여질 내용 2 (else if)
    </c:when>
    <c:otherwise>
    	위의 내용에 해당하지 않을 때(else)
    </c:otherwise>
</c:choose>

0123
Test8.jsp


Test8.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>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 action="" method="post">
		정수
		<input type="text" name="su" class="txt">
		<br /><br />
		
		<button type="submit" class="btn">결과 확인</button>	
	</form>
</div>
<br /><br />


<div>
	<c:if test="${!empty param.su }">
	
		<%-- ${param.su } --%>
		
		<%-- <c:choose></c:choose> --%>
		<%-- <c:choose></c:choose> --%>
		<%--  → JSTL Core 에서 if ~ else 를 대신할 수 있는 구문 --%>
		
		<c:choose>
			
			<%-- when : 조건 --%>
			
			<%-- 연속적인 조건을 && 로 통해 구성할 때에는
			     test 내부 문자열 안의 ${ } 내부에 모두 작성하도록 하자.
			--%>
			<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>

<!-- 3의 배수
	 4의 배수
	 3과 4의 배수
	 3또는 4의 배수 아님 -->

<!-- 3과 4의 배수 ★ (이걸 먼저 판별!!0
 	 3의 배수
	 4의 배수
	 3또는 4의 배수 아님 -->

</body>
</html>

 

 


 

 

【EL 테스트 및 관찰】 - Test5.jsp (EL을 통한 구구단 출력 실습 - 반복문 태그 사용)

 

Gugudan.jsp


 

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">
</head>
<body>

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

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


<table class='table'>
	<tr>
		<td>
			<c:if test="${!empty param.dan }">
				<c:forEach var="i" begin="1" end="9" step="1">
					<p>${param.dan} * ${i } = ${param.dan * i }</p>
				</c:forEach>
			</c:if>
		</td>
	</tr>
</table>

<!-- 선생님 풀이~!! -->
<!-- ul 태그를 사용하니까 리스트 형태로 되어서 이쁘다 ㅎㅎ -->

<div>
	<!-- 결과 처리 -->
	<%-- ${param.dan } --%>
	
	<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>

 

 


 

 

【EL 테스트 및 관찰】 - Test9.jsp (import를 통한 다른 페이지 HTML 가져오기.)

 

EL - import 태그 사용 형식

 

// Gugudan.jsp의 링크 주소 문자열을 변수 url에 저장.
<c:set var="url" value="Gugudan.jsp"></c:set>

// import를 수행 → url을 통해 가져온 페이지의 내용을 변수 impt에 저장.
<c:import url="${url }" var="impt">
	// Gugudan.jsp 페이지의 dan 변수 값을 7로 세팅.
    <c:param name="dan" value="7"></c:param>
</c:import>

01
Test9.jsp


Test9.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>Test9.jsp</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>

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

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


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

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

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

<!-- escapeXml 속성을 
	 true로 하게 되면, HTML 코드가 그대로 출력되지만
	 false로 하게 되면, import한 파일의 실행 결과가 그대로 페이지에 옮겨진다.
-->

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

</body>
</html>

 


지금까지의 JSTL(EL) 학습을 기반으로 한 실습 - 회원 다섯명의 정보를 한꺼번에 전송하여 출력
- MemberDTO, MemberInsertForm, MemberInsert, MemberList

 

 

01
MemberInsertForm.jsp, MemberInsert.jsp(뒷단 Logic), MemberList.jsp(결과출력 화면)

 

 


MemberDTO - (JavaBean)

 

/*=======================
   MemberDTO.java
=======================*/
package com.test;

public class MemberDTO
{
	
	// 주요 속성 구성
	private String name, tel, addr;
	
	public MemberDTO()
	{
		
	}
	
	
	public MemberDTO(String name, String tel, String addr)
	{
		this.name = name;
		this.tel = tel;
		this.addr = addr;
	}


	
	// getter / setter 구성
	public String getName()
	{
		return name;
	}



	public void setName(String name)
	{
		this.name = name;
	}



	public String getTel()
	{
		return tel;
	}



	public void setTel(String tel)
	{
		this.tel = tel;
	}



	public String getAddr()
	{
		return addr;
	}



	public void setAddr(String addr)
	{
		this.addr = addr;
	}
	
	/* private String name, tel, address; */

//	
//	public String getName()
//	{
//		return name;
//	}
//
//	public void setName(String name)
//	{
//		this.name = name;
//	}
//
//	public String getTel()
//	{
//		return tel;
//	}
//
//	public void setTel(String tel)
//	{
//		this.tel = tel;
//	}
//
//	public String getAddress()
//	{
//		return address;
//	}
//
//	public void setAddress(String address)
//	{
//		this.address = address;
//	}
	
	
}

 


 

MemberInsertForm.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>MemberInsertForm.jsp</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
<style type="text/css">
	td{text-align: center;}
</style>

</head>
<body>

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

		<!-- (이름, 전화번호, 주소) * 5명 분 -->
		<!-- → submit 액션 처리 -->
		
		<!--
		input[type="text"][name="name$"].txt{이름}
		input[type="text"][name="tel$"].txt{전화번호}
		input[type="text"][name="address$"].txt{주소}
 		-->
<div>
	<form action="MemberInsert.jsp" method="post">
<!-- 		
	<table border="1" class='table'>
		<tr>
			<th>이름</th>
			<th>전화번호</th>
			<th>주소</th>
		</tr>
		<tr>
			<td>
				<input type="text" name="name1" class="txt" />이름1
			</td>
			<td>
				<input type="text" name="tel1" class="txt" />전화번호1
			</td>
			<td>
				<input type="text" name="address1" class="txt" />주소1
			</td>
		</tr>
		<tr>
			<td>
				<input type="text" name="name2" class="txt" />이름2
			</td>
			<td>
				<input type="text" name="tel2" class="txt" />전화번호2
			</td>
			<td>
				<input type="text" name="address2" class="txt" />주소2
			</td>
		</tr>
		<tr>
			<td>
				<input type="text" name="name3" class="txt" />이름3
			</td>
			<td>
				<input type="text" name="tel3" class="txt" />전화번호3
			</td>
			<td>
				<input type="text" name="address3" class="txt" />주소3
			</td>
		</tr>
		<tr>
			<td>
				<input type="text" name="name4" class="txt" />이름4
			</td>
			<td>
				<input type="text" name="tel4" class="txt" />전화번호4
			</td>
			<td>
				<input type="text" name="address4" class="txt" />주소4
			</td>
		</tr>
		<tr>
			<td>
				<input type="text" name="name5" class="txt" />이름5
			</td>
			<td>
				<input type="text" name="tel5" class="txt" />전화번호5
			</td>
			<td>
				<input type="text" name="address5" class="txt" />주소5
			</td>
		</tr>
	</table>
	 -->		
	 
	 <!-- (이름, 전화번호, 주소) * 5명 분 -->
	<!-- → submit 액션 처리 -->
	 

	<table class="table">
		<tr>
			<th>이름</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>
		</tr>
		<tr>
			<th>전화번호</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${a }"> --%>
					<input type="text" name="tel${i }">
					<c:set var="i" value="${i+1 }"></c:set>
				</c:forEach>
			</td>
		</tr>
		<tr>
			<th>주소</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${a }"> --%>
					<input type="text" name="addr${i }">
					<c:set var="i" value="${i+1 }"></c:set>
				</c:forEach>
			</td>
		</tr>
		
		<tr>
			<td colspan="2">
				<button type="submit" class="btn" style="width:100%;">입력</button>
			</td>
		</tr>
	</table>

<%-- 

	<table class='table'>
		<tr>
			<th>이름</th>
			<th>전화번호</th>
			<th>주소</th>
		</tr>
		<c:forEach var="a" begin="1" end="5" step="1">
		<tr>
			<td>
				<input type="text" name="name${a }" class="txt" />이름1
			</td>
			<td>
				<input type="text" name="tel${a }" class="txt" />전화번호1
			</td>
			<td>
				<input type="text" name="address${a }" class="txt" />주소1
			</td>
		</tr>
		</c:forEach>
	</table>		
 		
	<button type="submit" class="btn">입력하기</button>
	
	</form>
--%>

</div>

</body>
</html>

 


 

MemberInsert.jsp
`<jsp:forward page="MemberList.jsp">`를 통해, MemberList.jsp로 포워딩.

 

<%@page import="java.util.List"%>
<%@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()
	//                       MemberDTO
	
	// → MemberList.jsp 에서 출력
	
	
	List<MemberDTO> lists = new ArrayList<MemberDTO>();

	for (int i = 1; i <= 5; i++)		// i → 1 2 3 4 5
	{
		MemberDTO ob = new MemberDTO( request.getParameter("name" + i)
								    , request.getParameter("tel" + i )
									, request.getParameter("addr" + i));
		
		// DTO 구성이 됐을 때마다 lists 에 add() 해 준다.
		lists.add(ob);
	}
	
	request.setAttribute("lists", lists);
	
	// Req...(RequestDispatcher 사용도 가능하다...)
	
	

// 내 풀이 ㅎㅎ
/* 	
	ArrayList<MemberDTO> dtoList = new ArrayList<MemberDTO>();
	
	for (int i = 1; i <= 5; i ++)
	{
		MemberDTO dto = new MemberDTO();
		
		dto.setName(request.getParameter("name" + i));
		dto.setTel(request.getParameter("tel" + i));
		dto.setAddr(request.getParameter("addr" + i));
		//dto.setAddress(request.getParameter("address" + i));
		
		dtoList.add(dto);
	
	}
	
	request.setAttribute("dtoList", dtoList);
	
	 */
	
	
%>

<jsp:forward page="MemberList.jsp"></jsp:forward>

 


 

MemberList.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>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명의 이름, 전화번호, 주소 출력 -->
	<table border="1" class='table' style="text-align: center;">
		<tr>
			<th>이름</th>
			<th>전화번호</th>
			<th>주소</th>
		</tr>
	<%-- <c:forEach var="dto" items="${dtoList }"> --%>
	<c:forEach var="dto" items="${lists }">
		<tr>
			<td>
				${dto.name}
			</td>
			<td>
				${dto.tel}
			</td>
			<td>
				${dto.addr }
				<%-- ${dto.address} --%>
			</td>
		</tr>
	</c:forEach>
	</table>
	
</div>

</body>
</html>