코딩/4-JSP & SERVLET

C01_session_basic

tree0505 2025. 6. 30. 14:43
반응형
    • 01_이차반복문제

  • 이차반복문_규칙찾기1_문제.jsp
<%@page import="java.util.Random"%>
<%@ 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>
	<%
		/*
		    [문제]
		        3~6 사이의 랜덤 숫자 하나를 저장하고 
		        그 숫자만큼 아래와 같은 규칙으로 출력하시오.
		        단, 일차 반복문 과 이차 반복문으로 출력하시오.
		        
		    [예시]
		        r = 6
		    [출력]
		        18 12 6
		        17 11 5
		        16 10 4
		        15 9 3
		        14 8 2
		        13 7 1    
		    
		    [예시]
		        r = 4
		    [출력]
		        12 8 4
		        11 7 3
		        10 6 2
		        9 5 1
		*/
	%>
	
	<%
		Random ran = new Random();
		int r = ran.nextInt(4) + 3; 
		
		int a = r * 3; 
	%>
	
		r = <%= a %><br/>
		
	<%
		for(int i = 0; i<r; i++){
			int b = a; 
			for(int j = 0; j<3; j++){
	%>
			<%=b %>
	<%
			b -= r; 
		}
			a -= 1; 
	%>
			<br/>
			<% }%>

</body>
</html>

  • 이차반복문_규칙찾기2_문제.jsp
<%@page import="java.util.Random"%>
<%@ 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>
	<%
		/*
		    [문제]
		        3~6 사이의 랜덤 숫자 하나를 저장하고 그 숫자만큼 
		        아래와 같은 규칙으로 출력하시오.
		        단, 일차 반복문과 이차 반복문으로 출력하시오.
		        
		    [예시]
		        r = 6
		    [출력]
		        3 2 1
		        4 3 2
		        5 4 3
		        6 5 4
		        7 6 5
		        8 7 6
		*/
	%>
	
	<%
	
		Random ran = new Random(); 
		int r = ran.nextInt(4)+3; 
	%>
		r = <%=r %> <br/>
	<%
		for(int i = 0; i<r; i++){
			int num = i + 3; 
			for(int j = 0; j<3; j++){
	%>
			<%= num -j %>
			
			<%} %>
			<br/>
		<%} %>
	
</body>
</html>

  • 이차반복문_그래프자리수_문제.jsp
<%@page import="java.util.Arrays"%>
<%@page import="java.util.Random"%>
<%@ 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>
	<%
	    /*
	        [문제] 
	            10~99 사이의 랜덤 숫자를 다섯 번 반복해서 저장하고,
	            각각의숫자의 자리수로 나눈다. 각각의 자리수의 합만큼 별을출력하시오.
	        [예시]
	            53,27,38,41,90
	            8=********
	            9=*********
	            11=***********
	            5=*****
	            9=*********
		*/
	%>
	
	<%
		Random ran = new Random(); 
		int[] arr = new int[5];
		for(int i = 0; i<5; i++){
			int size = ran.nextInt(90)+10; 
			arr[i] = size; 
		}
	%>
		<%= Arrays.toString(arr) %> <br/>
		
	<%
	
		for(int i = 0; i<5; i++){
			int value = arr[i]; 
			int a = value / 10; 
			int b = value % 10; 
			int c = a + b ; 
		
	%>
		<%= c %>=
	<% 		for(int j = 0; j<c; j++){ %>
				*
	<%			} %>
				<br/>
	<% }  %>
		
</body>
</html>

  • 이차반복문_나빼고다른값검색_문제.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>
	<%
		/*
			[문제]
			    각각의 배열의 값들이 나머지값들과 비교해서 현재의 배열값보다 다른값만 출력하시오.
			    단, 값이 같은때에는 #을 출력하시오.
			    그리고, 내자리는 숫자대신 "*" 을출력하시오.
			[정답]
				* 20 30 40 30 # 50 60
				10 * 30 40 30 10 50 60
				10 20 * 40 # 10 50 60
				10 20 30 * 30 10 50 60
				10 20 # 40 * 10 50 60
				# 20 30 40 30 * 50 60
				10 20 30 40 30 10 * 60
				10 20 30 40 30 10 50 *
		*/
		
		int[] arr = {10, 20, 30, 40, 30, 10, 50, 60};
	%>
	
	<%
		for(int i = 0; i<arr.length; i++){
			int  a = arr[i];
			for(int j = 0; j<arr.length; j++){
				int b = arr[j];
				if(a != b){
	%>
				<%= arr[j] %>
	<%			} else if(i == j){ %>
					*
	<%			} else{ %>
					#
	<%			} %>
	<%		} %>
			<br/>
	<%} %>
</body>
</html>

  • 이차반복문_내앞에큰값검색_문제.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>
	<%
	    /*
		    [문제]
		        각각의 배열의 값들이 배열전체의 값들과 비교하면서 현재값의 앞에 위치한 값들만 출력하시오.
		        단, 내앞의 값둘중 나보다 큰값들만 출력하시오.
		    [정답]
		        =10
		        =20
		        =30
		        =40
		        40 =30
		        20 30 40 30 =10
		        =50
		        =60
		*/
		
		int[] arr = {10, 20, 30, 40, 30, 10, 50, 60};
	%>
	
	<%
		for(int i = 0; i<arr.length; i++){
			int a = arr[i]; 
			
			for(int j = 0; j<i; j++){
				
				int b = arr[j];
				
				if(a<b){
	%>
				<%= arr[j] %>
	<%
				}
			}
	%>
		= <%= arr[i] %> <br/>
		<%} %>

</body>
</html>

  • 이차반복문_상품재고_문제.jsp
<%@page import="java.util.Arrays"%>
<%@ 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>
	<%
		/*
			[문제]
			    item배열은 상품의 번호이다.
			    price배열은 상품의 가격이다.
			    count배열은 상품의 재고 개수이다.
			    item과 price, count는 한 세트이다.
			
			    order배열은 오늘 주문이 들어온 상품의 번호이다. 	
			    단, 주문할 때마다 count 재고에서 하나씩 감소하고, 
			    재고가 0이면 주문할 수 없다.
			    주문할 수 없을 때는 "주문 불가"를 출력하시오.
			    order의 주문을 토대로 오늘 매출을 구하시오.
			    count 리스트도 출력하시오.
			[정답]
			    order = 0, count = 2,1,2,1
			    order = 1, count = 2,0,2,1
			    order = 3, count = 2,0,2,0
			    order = 3, 주문불가
			    order = 2, count = 2,0,1,0
			    order = 2, count = 2,0,0,0
			    order = 1, 주문불가
			    매출 = 12600
		*/
		
		int[] item  = {1001, 1002, 1003, 1004};
		int[] price = {500, 1200, 4300, 2300};
		int[] count = {3, 1, 2, 1};
		
		int[] order = {1001, 1002, 1004, 1004, 1003, 1003, 1002};
	%>
	
	<%
		int total = 0; 
	
		for(int i = 0; i<order.length; i++){
			int number = order[i];
			for(int j = 0; j<item.length; j++){
				if(number == item[j]){
	%>
					order = <%= j %>,
	<%
					if(count[j]>0){
						count[j] -= 1; 
						total += price[j];
	%>
					count = <%=Arrays.toString(count) %> <br/>
	<%
					} else{ %>
					주문불가 <br/>
	<%
					}
				}
			}
		}
	
	%>

	<%=total %>
	
	
</body>
</html>

  • 이차반복문_상품취소_문제.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>
	<%
	/*
		[문제]
		    item배열은 상품의 번호이다.
		    price배열은 상품의 가격이다.
		    total 은 오늘 의 매출이다. 
		    단, cancel 은 오늘 주문취소한 주문번호이다. 
		    [1] 주문을 취소한 번호와 가격을 전부 출력하시오.
		    [2] 오늘의 매출에서 취소한 주문가격을 제외한 매출을 출력하시오.
		[정답]
		    주문취소
		    1002번1200원
		    1004번2300원
		    1003번4300원
		    오늘의최종매출 = 8300
		*/
		
		int[] item  = {1001, 1002, 1003, 1004};
		int[] price = { 500, 1200, 4300, 2300};
		int total = 16100;
		
		int[] cancel = {1002,1004,1003};
	%>
	
	<%
		for(int i = 0; i<cancel.length; i++){
			int number = cancel[i];
			for(int j = 0; j<item.length; j++){
				if(item[j] == number){
	%>
			<%= item[j] %> 번 <%=price[j] %> 원 <br/>
	<%
					total -= price[j]; 
				}
			}
		}
	
	%>
	오늘의최종매출 = <%= total %>
	
</body>
</html>

  • 이차반복문_석차출력_문제.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>
	<%
			/*
			    [문제]
			        scoreList는 학생시험점수배열이다. 
			        석차를 출력하시오.
			    [정답]
			        2 3 4 1 
			*/
			
			int[] scoreList = {87,   42,   11,   98};
			
			int size = scoreList.length;
		
	%>
	
	<% for(int i = 0; i<size; i++) {%>
		<% int count = 1;  %>
		
		<% for(int j = 0; j<size; j++){ %>
			<%if(scoreList[i]<scoreList[j]){ %>
				<%count += 1; %>
		<%} %>
	<%} %>
	
	<%=count+" "%>
	<%} %>
</body>
</html>

  • 이차반복문_약수여러개개수_문제.jsp
<%@page import="java.util.Arrays"%>
<%@ 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>
	<%
	    /*
		    [문제]
		        arr배열의 각 값의 약수를 전부 출력하고 
		        각 약수의 개수를 count배열에 추가하시오.
		    [정답]
		        1 43 
		        1 5 11 55 
		        1 5 13 65 
		        1 11 		
		        count = 2, 4, 4, 2
		*/
		
	    int[] arr = {43, 55, 65, 11};
	    int[] count = new int[4];
	%>
	
	<%
		for(int i = 0; i<arr.length; i++){
			
			int total = 0; 
			for(int j = 1; j<=arr[i]; j++){
				if(arr[i]%j == 0 ){
	%>
				<%= j %>
	<%
				total += 1; 
				}
			}
			count[i] = total; 
	%>
		<br/>
	<%} %>
	count = <%=Arrays.toString(count) %>

</body>
</html>

  • 02_이차배열문제

  • 이차배열_문제_상품목록_추가_문제.jsp
<%@page import="java.util.Arrays"%>
<%@ 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>
<pre>
		itemData는 이번달 과일판매목록이다. 
		데이터 순서는 번호,이름,가격,판매개수 이다.
		마지막 "0" 은 각 아이템별 총매출가격이다.
		
	    [문제] 
			각 상품별 매출 총합을 각각 배열의 뒤에 추가하시오.
		[정답] 
			[1001, 사과, 3000, 32, 96000]
			[1002, 배, 2000, 12, 24000]
			[1003, 딸기, 4000, 42, 168000]
			[1004, 바나나, 1500, 55, 82500]
</pre>
<%

	String[][] itemData = {
	    {"1001", "사과" , "3000", "32" , "0"},         
	    {"1002", "배"  , "2000", "12" , "0"},        
	    {"1003", "딸기" , "4000", "42" , "0"},         
	    {"1004", "바나나", "1500", "55" , "0"},      
	};
	
	int total = 0; 
	for(int i = 0; i<itemData.length; i++){
		int a = Integer.parseInt(itemData[i][2]);
		int b = Integer.parseInt(itemData[i][3]);
		int result = a * b ; 
		itemData[i][4] = result +""; //꼼수 
	}
	for(int i = 0; i<itemData.length; i++){
		System.out.println(Arrays.toString(itemData[i]));
	}
%>

<div align="center">
	<h3>이번 달 과일 판매 목록</h3>
	<table border="1">
		<tr>
				<td>번호</td>
				<td>이름</td>
				<td>가격</td>
				<td>판매 개수</td>
				<td>총 매출</td>
		</tr>
		<%for(int i = 0; i<itemData.length; i++){ %>
			<tr>
				<td><%= itemData[i][0] %></td>
				<td><%= itemData[i][1] %></td>
				<td><%= itemData[i][2] %></td>
				<td><%= itemData[i][3] %></td>
				<td><%= itemData[i][4] %></td>
			</tr>
		<%} %>
	</table>


</div>
</body>
</html>

  • 이차배열_문제_상품재고_문제.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>
<pre>
			[문제]
			    itemData 는상품의 정보이다.
			    데이터는 순서대로 번호 , 가격 , 재고 수량이다. 
			
			    order배열은 오늘 주문이 들어온 상품의 번호이다. 	
			    단, 주문할 때마다 itemData 재고에서 하나씩 감소하고, 
			    재고가 0이면 주문할 수 없다.
			   
			    order의 주문을 토대로 오늘 매출을 구하시오.
			    재고가 변경된 itemData 도 함께 출력하시오.
			    
			[정답]
			    1001,500,2
			    1002,1200,0
			    1003,4300,0
			    1004,2300,0
			    total=12600
</pre>
	<%
	
		int[][] itemData = {
			{1001,500,3},
			{1002,1200,1},
			{1003,4300,2},
			{1004,2300,1}
		};
		
		int[] order = {1001, 1002, 1004, 1004, 1003, 1003, 1002};
	%>
	
	<%
		int total = 0; 
		for(int i = 0; i<order.length; i++){
			
			for(int j = 0; j<itemData.length; j++){
				if(order[i] == itemData[j][0]){
					if(itemData[j][2] > 0){
						total += itemData[j][1];
						itemData[j][2] -= 1; 
					}
				}
			}
		}
	%>
	<div align="center">
	<h3>상품정보</h3>
	<table border="1">
		<tr>
			<td>번호</td>
			<td>가격</td>
			<td>재고 수량 </td>
		</tr>	
		<%for(int i = 0; i<itemData.length; i++){ %>
			<tr>
				<td><%=itemData[i][0] %></td>
				<td><%=itemData[i][1] %></td>
				<td><%=itemData[i][2] %></td>
			</tr>
		<%} %>
			<tr>
				<td>종합</td>
				<td colspan="2"><%=total %></td>
			</tr>
	</table>
	</div>
	
	
	
</body>
</html>

  • 이차배열_문제_시험점수순위_문제.jsp
<%@page import="java.util.Arrays"%>
<%@ 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>
<pre>
		student배열은 이번 학기 중간고사 성적이다.
		가로 한 줄을 기준으로 맨 앞은 번호이고, 뒤에 숫자 3개는
		각각 국어, 수학, 영어 점수이다. 
		나머지 두개는 각가 총점과 등수이다.
		
	  	[문제]
	    	[1] 각학생별 총점과 등수를 저장하시오.
	    	[2] 등수순으로 오름차순 출력하시오.
	    	[3] 등수가 같으면 번호가 큰순서대로 내림차순하시오.
		[정답]
			[1004, 76, 54, 55, 185, 1]
			[1001, 100, 20, 32, 152, 2]
			[1005, 23, 58, 42, 123, 3]
			[1003, 60, 21, 42, 123, 3]
			[1002, 40, 43, 12, 95, 5]
</pre>
<%
	
	
	int[][] student = {
	    {1001, 100, 20, 32, 0, 0},        
	    {1002,  40, 43, 12, 0, 0},         
	    {1003,  60, 21, 42, 0, 0},         
	    {1004,  76, 54, 55, 0, 0},        
	    {1005,  23, 58, 42, 0, 0}          
	};
%>

<%

	for(int i = 0; i<student.length; i++){
		int total = student[i][1] + student[i][2] + student[i][3];
		student[i][4] = total;
	}

	for(int i = 0; i<student.length; i++){
		int count = 1; 
		for(int j = 0; j<student.length; j++){
			if(student[i][4] < student[j][4]){
				count += 1; 
			}
		}
		student[i][5] = count; 
	}
	
	Arrays.sort(student,(a,b)->{
		if(a[5]<b[5]){
			return -1;
		}else if(a[5] > b[5]){
			return 1; 
		}else {
			if(a[0] < b[0]){
				return 1; 
			}else if(a[0] > b[0]){
				return -1; 
			}else{
				return 0; 
			}
		}
	});

%>

<div align="center">
	<h3>이번 학기 중간고사 성적</h3>
	<table border="1">
		<tr>
			<td>번호</td>
			<td>국어</td>
			<td>수학</td>
			<td>영어</td>
			<td>총점</td>
			<td>등수</td>
		</tr>
	<%for(int i = 0; i<student.length; i++){ %>
		<tr>
			<td><%=student[i][0] %></td>
			<td><%=student[i][1] %></td>
			<td><%=student[i][2] %></td>
			<td><%=student[i][3] %></td>
			<td><%=student[i][4] %></td>
			<td><%=student[i][5] %></td>
		</tr>
	<%} %>
	</table>


</div>



</body>
</html>

  • 03_폼과히든데이터

  • 01_히든

  • hiddenForm.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>
 <%--
 		속성 type="hidden" 을 사용하여 사용자에게 입력받지않은 데이터를 전달할수있다. 
 		주의 : value값을 설정해야한다.
  --%>
  
  <%
  	int a = 10;
  	int b = 20; 
  %>
  <form action="hiddenFormPro.jsp">
  	<input type="hidden" value=<%=a %> name="a">
  	<input type="hidden" value=<%=b %> name="b">
  	<input type="text" name="c">
  	<input type="submit" value="전송">
  </form>

</body>
</html>

  • hiddenFormPro.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>
	<%
		String str = request.getParameter("a");
		int a = Integer.parseInt(str);
		str = request.getParameter("b");
		int b = Integer.parseInt(str);
		str = request.getParameter("c");
		int c = Integer.parseInt(str);

	%>
	
	<%=a %><%=b %><%=c %>
	<a href="hiddenForm.jsp">뒤로가기</a>
</body>
</html>

  • 02_구구단게임

  • gugudanForm.jsp
<%@page import="java.util.Random"%>
<%@ 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>
<%--	
	 [구구단 게임]
	  
	  1. 구구단 문제를 출제하기 위해, 숫자 2개를 랜덤저장한다.
	  2. 저장한숫자를 토대로 구구단 문제를 출력한다.
	 	 예)	3 x 7 = ?
	  3. 문제에 해당하는 정답을 입력받는다.
	  4. 정답을 비교 "정답" 또는 "땡"을 출력한다.
	 
 --%>
 
 <%
 	Random ran = new Random();
 	int num1 = ran.nextInt(8) + 2;
 	int num2 = ran.nextInt(9) + 1;
 %>

 <h2>구구단</h2> 
 <form action="gugudanFormPro.jsp">
   <%=num1 %> * <%=num2 %> = <input type="text" name="result"> <br>
   
   <input type="hidden" value=<%=num1 %> name="num1">
   <input type="hidden" value=<%=num2 %> name="num2">
   <input type="submit" value="입력완료">  
 </form>
</body>
</html>

  • gugudanFormPro.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>

<%
	String strNum = request.getParameter("num1");	 
	int num1 = Integer.parseInt(strNum);
	
	strNum = request.getParameter("num2");	 
	int num2 = Integer.parseInt(strNum);
	
	strNum = request.getParameter("result");	 
	int result = Integer.parseInt(strNum);
	
%>
 <%=num1 %> * <%=num2 %> = <%=result %> <br>

 <a href="gugudanForm.jsp">돌아가기</a>
</body>
</html>

 

반응형

'코딩 > 4-JSP & SERVLET' 카테고리의 다른 글

C12_db_gisatest => 01_골프장  (1) 2025.06.30
C02_session_cart  (0) 2025.06.30
B23_servlet_board-TEST1  (0) 2025.05.29
B22_servlet_crud-TEST2  (0) 2025.05.28
B22_servlet_crud-TEST1 - 만드는 순서  (0) 2025.05.28