ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [JSP] 004. JSP / Servlet 관찰(3)
    SsY/Class 2023. 5. 18. 18:00
    728x90
    데이터 송수신 실습
    • SendAndReceive07
      - 만년 달력 (select box)
    <%@ page import="java.util.Calendar"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
    	// 이전 페이지(SendAndReceive07_1.jsp)로부터 넘어온 데이터 수신
    	// → year, month
    	String sYear = request.getParameter("year");
    	String sMonth = request.getParameter("month");
    	
    	// Calendar 객체 생성
    	//java.util.Calendar cal  = java.util.Calendar.getInstance();
    	//-- 자바에서 생성하는 것과 같이 인텔리센스 기능 활용하여 객체 생성 가능
    	Calendar cal = Calendar.getInstance();
    	
    	// 현재 년, 월, 일 확인
    	int nowYear = cal.get(Calendar.YEAR);			//-- 2023
    	int nowMonth = cal.get(Calendar.MONTH)+1;		//-- 5
    	int nowDay = cal.get(Calendar.DAY_OF_MONTH);	//-- 18 (당일 -> 캘린더에 다르게 표시 하기 위해)
    	
    	// 표시할 달력의 년, 월 구성 → 페이지 최초 요청을 감안한 코드
    	int selectYear = nowYear;
    	int selectMonth = nowMonth;
    	// 페이지에 대한 요청이 최초가 아닐 경우
    	// → line 6 ~ 7 을 통해 수신한 데이터로 표시할 달력의 년, 월 구성 
    	if(sYear != null || sMonth!= null)
    	{
    		selectYear = Integer.parseInt(sYear);
    		selectMonth = Integer.parseInt(sMonth);
    	}
    	
    	// 테스트
    	//out.print("<h1>selectYear : "+ selectYear+ "</h1>");
    	//out.print("<h1>selectMonth : "+ selectMonth+ "</h1>");
    	
    	// 확인한 날짜로 년도 select option 구성==========================================
    	// <option value="2013">2013</option>
    	//						:
    	// <option value="2013" selected="selected">2023</option>
    	//						:
    	// <option value="2033">2033</option>
    	String yOptions = "";
    	for (int year=(selectYear-10); year<=(selectYear+10); year++)
    	{
    		// 관찰 1,2 경우 -- 최초 요청 페이지 부분만 구성
    		// 관찰1 -- 년도 구성
    		// year 는 실제 구성시 <option value='year'>
    		// "<option value='" + year + "' + year + >
    		// yOptions += "<option value='" + year + "'>" + year + "</option>";
    		
    		// 관찰2 -- selected 되게 만들기
    		//if(year==nowYear)
    		//	yOptions += "<option value='" + year + "' selected='selected'>" + year + "</option>";
    		//else	// 선택 년도가 아닐때는 그냥 추가
    		//	yOptions += "<option value='" + year + "'>" + year + "</option>";
    		
    		// 상황1. 페이지 최초 요청일 때 → sYear 는 null / 현재 년도와 옵션이 같을 때 → selected(○)
    		// 상황2. 페이지 최초 요청이 아닐 때 → sYear 는 null 아님 / 선택된 년도와 옵션이 같을 때 → selected(○)
    		// 상황3. 나머지 → selected(Χ)
    		
    		// 관찰3 -- 변경된 요청까지 selected 되게 만들기
    		if(year==nowYear && sYear == null)
    			yOptions += "<option value='" + year + "' selected='selected'>" + year + "</option>";
    		else if(year==selectYear && sYear != null)
    			yOptions += "<option value='" + year + "' selected='selected'>" + year + "</option>";
    		else	// 선택 년도가 아닐때는 그냥 추가
    			yOptions += "<option value='" + year + "'>" + year + "</option>";
    	}
    	
    	// ==========================================확인한 날짜로 년도 select option 구성
    	
    	// 확인한 날짜로 월 select option 구성==========================================
    	// <option value='1'>1</option>
    	//				:
    	// <option value='5' selected='selected'>5</option>
    	//				:
    	// <option value='12'>12</option>
    	String mOptions = "";
    	for (int month=1; month<=12; month++)
    	{
    		// 상황1. 페이지 최초 요청일 때 → sMonth 는 null / 현재 월과 옵션이 같을 때 → selected(○)
    		// 상황2. 페이지 최초 요청이 아닐 때 → sMonth 는 null 아님 / 선택된 월과 옵션이 같을 때 → selected(○)
    		// 상황3. 나머지 → selected(Χ)
    		
    		// year 관찰 -> 월 구성
    		if(month==nowMonth && sMonth == null)
    			mOptions += "<option value='" + month + "' selected='selected'>" + month + "</option>";
    		else if(month==selectMonth && sMonth != null)
    			mOptions += "<option value='" + month + "' selected='selected'>" + month + "</option>";
    		else	// 선택 년도가 아닐때는 그냥 추가
    			mOptions += "<option value='" + month + "'>" + month + "</option>";
    	}
    	
    	// ==========================================확인한 날짜로 월 select option 구성	
    			
    	// 그려야 할 달력의 1일이 무슨 요일인지 확인 필요 
    	// 만년달력
    	
    	int[] months = {31,28,31,30,31,30,31,31,30,31,30,31};
    	if(selectYear%4==0&&selectYear%100!=0||selectYear%400==0)
    		months[1] = 29;
    	
    	// 총 날 수 누적 변수
    	int nalsu;
    	
    	// 요일 항목 배열 구성
    	String[] weekNames = {"일","월","화","수","목","금","토"};
    	
    	// 현재 년도 → 입력 받은 년도 이전 년도 가지 날 수 계산
    	nalsu = (selectYear-1)*365 + (selectYear-1)/4 - (selectYear-1)/100 + (selectYear-1)/400;
    	
    	// 현재 월 → 입력받은 월 이전 월까지의 날 수 계산
    	for (int i=0; i<selectMonth-1; i++)
    		nalsu += months[i];
    	
    	nalsu++;	// 해당월 1일
    	
    	int week = nalsu%7;	//요일변수
    	int lastDay = months[selectMonth-1]; //마지막 날짜 변수
    	
    	// 달력그리기-------------------------------------------------------------
    	String calStr = "";
    	calStr += "<table border='1'>";
    	
    	// 요일 이름 발생
    	calStr += "<tr>";
    	for(int i=0; i<weekNames.length; i++)
    	{
    		//calStr += "<th>" + weekNames[i] + "</th>";
    		
    		// 요일에 스타일 추가를 위해 분기
    		if(i==0)
    			calStr += "<th style='color:red;'>" + weekNames[i] + "</th>";
    		else if(i==6)
    			calStr += "<th style='color:blue;'>" + weekNames[i] + "</th>";
    		else
    			calStr += "<th>" + weekNames[i] + "</th>";
    	}
    	calStr += "</tr>";
    	
    	// 빈 칸 공백 td 발생
    	calStr += "<tr>";
    	for (int i=1; i<=week; i++)
    		calStr += "<td></td>";
    		
    	// 날짜 td 발생
    	for (int i=1; i<=lastDay; i++)
    	{
    		week++;
    		//-- 날짜가 하루씩 찍힐 때 마다(구성이 이루어질 때 마다)
    		//   요일도 함께 1씩 증가할 수 있도록 처리
    		//calStr += "<td>" + i + "</td>";
    		
    		if(selectYear==nowYear && selectMonth==nowMonth && i==nowDay && week%7==0) // 토요일인 오늘
    			calStr += "<td class='nowSat'>" + i + "</td>";
    		else if(selectYear==nowYear && selectMonth==nowMonth && i==nowDay && week%7==1) // 일요일인 오늘
    			calStr += "<td class='nowSun'>" + i + "</td>";
    		else if(selectYear==nowYear && selectMonth==nowMonth && i==nowDay) // 평일인 오늘
    			calStr += "<td class='now'>" + i + "</td>";
    		else if(week%7==0)	//오늘이 아닌 토요일
    			calStr += "<td class='sat'>" + i + "</td>";
    		else if(week%7==1) // 오늘이 아닌 일요일
    			calStr += "<td class='sun'>" + i + "</td>";
    		else // 오늘이 아닌 평일
    			calStr += "<td>" + i + "</td>";
    		
    		if(week%7==0)
    			calStr += "</tr><tr>";
    	}
    	// 빈 칸 공백 td 발생
    	for(int i=0; i<=week; i++, week++)
    	{
    		if(week%7==0)
    			break;
    		calStr += "<td></td>";
    	}
    	
    	if(week%7!=0)
    		calStr += "</tr>";
    		
    	calStr += "</table>";
    	// -------------------------------------------------------------달력그리기
    	
    	
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>SendAndReceive07_1.jsp</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    <style type="text/css">
    	td {text-align : right;}
    	td.sat{color: blue;}
    	td.sun{color: red;}
    	td.now{background-color: aqua; font-weight: bold;}
    	td.nowSat{background-color: aqua; font-weight: bold; color: blue;}
    	td.nowSun{background-color: aqua; font-weight: bold; color: red;}
    </style>
    <script type="text/javascript">
    	function formCalendar(obj)
    	{
    		//유효성 검사가 필요할 경우 삽입
    		obj.submit();
    	}
    </script>
    </head>
    <body>
    <div>
    	<h1>데이터 송수신 실습 07</h1>
    	<hr>
    </div>
    <div>
    <!-- 
    	○ 데이터 송수신 실습 07
    	
    		- 달력을 출력하는 JSP 페이지를 구성한다.
    		
    		- 연도와 월을 선택받아 화면에 출력해주는 형태의 페이지로 구현한다.
    		
    		- 단, submit 버튼 없이 이벤트 처리를 할 수 있도록 한다.
    		
    		- 현재 페이지에서 전송한 내용을 현재 페이지에서 수신해서 출력해주는 형태의 페이지로 구성한다.
    		
    		  2013
    			: 
    		[ 2023 ▼ ] 년 [ 5 ▼ ] 월
    		    :
    		  2033
    		  
    		 -----------------------------
    		 -----------------------------
    		 -----------------------------	← 달력
    		 -----------------------------
    		 -----------------------------
    		
    		- 연도 구성은 현재의 연도를 기준으로 이전 10년, 이후 10년으로 구성한다.
    		  (기본적으로 만년달력을 구성하는데...
    		   현재의 연, 월 은 달력 객체로부터 확인할 수 있도록 처리한다.)
    		
    		- 월 구성은 1월 부터 12월 까지로 구성한다.
    		
    		- 연도 select 나 월 select 의 내용이 변화되면
    		  해당 연 월의 달력을 출력해주는 형태의 페이지로 구성한다.
    		  
    		- 사용자 최초 요청 주소
    		  http://localhost:8090/WebApp07/SendAndReceive07.jsp
    		  
    	○ 물리적 파일 구성
    		
    		- SendAndReceive07.jsp
     -->
     </div>
    
    
    <div>
    	<!-- form 의 action 속성 값 생략 → 요청 페이지 / 데이터 수신처는 자기 자신 -->
    	<form action="" method="post">
    		<select id="year" name="year" onchange=formCalendar(this.form)>
    			<!-- <option value="9999">9999</option> -->
    			<%=yOptions %>
    		</select>
    		 년
    		<select id="month" name="month" onchange=formCalendar(this.form)>
    			<!-- <option value="99">99</option> -->
    			<%=mOptions %>
    		</select>
    		 월	
    	</form>
    </div>
    <br>
    
    <div>
    	<!-- 달력을 그리게 될 지점 -->
    	<%=calStr %>
    </div>
     
     
     
     
    </body>
    </html>


    더보기
    <%@ page import="java.util.Calendar"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
    	String year = request.getParameter("years");
    	String month = request.getParameter("months");
    	
    	// Calendar 객체 생성
    	Calendar cal = Calendar.getInstance();
    	// 현재 연 월 가져오기
    	int nYear = cal.get(Calendar.YEAR);
    	int nMonth = cal.get(Calendar.MONTH) + 1;
    	
    	// 선택한 연 월 -- 최초에는 선택하지 않았으므로 바로 값 넣기
    	int sYear = nYear;
    	int sMonth = nMonth;	
    	if(year!=null || month!=null)
    	{
    		sYear = Integer.parseInt(year);
    		sMonth = Integer.parseInt(month);
    	}
    	
    	// year 선택 옵션 담기
    	String optionY = "";
    	for(int y=(sYear-10); y<=(sYear+10); y++)
    	{
    		if(year==null && y==nYear)
    			optionY += "<option value="+y+" selected=\"selected\">" + y +"</option>";
    		else if(year!=null && y==sYear)
    			optionY += "<option value="+y+" selected=\"selected\">"+ y +"</option>";
    		else
    			optionY += "<option value="+y+">" + y +"</option>";
    	}
    	
    	// month 선택 옵션 담기
    	String optionM = "";
    	for(int m=1; m<=12; m++)
    	{
    		if(month==null && m==nMonth)
    			optionM += "<option value="+m+" selected=\"selected\">" + m +"</option>";
    		else if(month!=null && m==sMonth)
    			optionM += "<option value="+m+" selected=\"selected\">"+ m +"</option>";
    		else
    			optionM += "<option value="+m+">"+m+"</option>";
    	}
    	
    	// 달력 그리기
    		// 월 마지막 날 배열
    		int[] days={31,28,31,30,31,30,31,31,30,31,30,31};
    		if(sYear%4==0&&sYear%100!=0||sYear%400==0)
    			days[1]=29;
    		
    		// 받아온 연 월 (sYear, sMonth) -> 날 수 구하기
    		int nalsu =0;
    		// 전년도 12월 31일까지 날 누적
    		nalsu = (365*(sYear-1))+((sYear-1)/4)-((sYear-1)/100)+((sYear-1)/400);
    		// 전월 마지막 날까지 누적
    		for(int i=0; i<(sMonth-1); i++)
    			nalsu += days[i];
    		// 받아온 연 월 첫 날
    		nalsu += 1;
    		// 요일 구하기
    		int week = nalsu%7;
    		int lastday = days[sMonth-1];
    		
    		// 달력
    		String calStr = "";
    		calStr += "<table class='calTbl' style='padding: 20px; background-color: #b1ebfa; border-radius: 10px;'>";
    		calStr += "<tr><th style=\"color:red\">일</th><th>월</th><th>화</th><th>수</th><th>목</th><th>금</th><th style=\"color:blue\">토</th></tr>";
    
    		calStr += "<tr>";
    		//공백
    		for(int i=0; i<week; i++)
    			calStr+="<td></td>";
    		// 1~마지막 날
    		int j=0;
    		for(j=1; j<=lastday; j++)
    		{
    			calStr += "<td>"+ j +"</td>";
    				if((week+j)%7==0)
    					calStr += "</tr><tr>";
    		}
    		//공백-- 최대 6개 발생
    		for(int k=0; k<6; k++, week++)
    		{
    			calStr += "<td></td>";
    			if((week+j)%7==0)
    				calStr += "</tr>";
    		}			
    		calStr += "</table>";
    		
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>SendAndReceive07.jsp</title>
    <link rel="stylesheet" type="text/css" href="css/greyBlue.css">
    <script type="text/javascript">
    	function submitForm(obj)
    	{
    		obj.submit();
    	}
    </script>
    </head>
    <body>
    <div>
    	<h1>데이터 송수신 실습 07</h1>
    	<hr>
    </div>
    <div>
    <!-- 
    	○ 데이터 송수신 실습 07
    	
    		- 달력을 출력하는 JSP 페이지를 구성한다.
    		
    		- 연도와 월을 선택받아 화면에 출력해주는 형태의 페이지로 구현한다.
    		
    		- 단, submit 버튼 없이 이벤트 처리를 할 수 있도록 한다.
    		
    		- 현재 페이지에서 전송한 내용을 현재 페이지에서 수신해서 출력해주는 형태의 페이지로 구성한다.
    		
    		  2013
    			: 
    		[ 2023 ▼ ] 년 [ 5 ▼ ] 월
    		    :
    		  2033
    		  
    		 -----------------------------
    		 -----------------------------
    		 -----------------------------	← 달력
    		 -----------------------------
    		 -----------------------------
    		
    		- 연도 구성은 현재의 연도를 기준으로 이전 10년, 이후 10년으로 구성한다.
    		  (기본적으로 만년달력을 구성하는데...
    		   현재의 연, 월 은 달력 객체로부터 확인할 수 있도록 처리한다.)
    		
    		- 월 구성은 1월 부터 12월 까지로 구성한다.
    		
    		- 연도 select 나 월 select 의 내용이 변화되면
    		  해당 연 월의 달력을 출력해주는 형태의 페이지로 구성한다.
    		  
    		- 사용자 최초 요청 주소
    		  http://localhost:8090/WebApp07/SendAndReceive07.jsp
    		  
    	○ 물리적 파일 구성
    		
    		- SendAndReceive07.jsp
     -->
     </div>
    
    <form method="post">
    	 <div> 
    	 	<select id="years" name="years" onchange="submitForm(this.form)">
    				<%=optionY %>
    	 	</select>
    	 	 년
    	 	<select id="months" name="months" onchange="submitForm(this.form)">
    				<%=optionM %>
    	 	</select>
    	 	 월
    	 </div>
    	 <br>	 
    </form>
     
     <div>
     
     	<img src="images/runJB.gif"><br>
     	<span style="color:#16b3d3; font-weight:bold;">달력 열심히 만드는 중...!<br>시켜만 주십쇼!</span>
     	<br><br>
     	<div>
     	<%=calStr %>
     	</div>
     </div>
     
    </body>
    </html>

    • SendAndReceive08
      - 만년달력 (<a> , a태그)
    <%@page import="java.util.Calendar"%>
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%!
    	int selectYear;
    	int selectMonth;
    %>
    <%
    	String before = request.getParameter("before");
    	String after = request.getParameter("after");
    	//out.print(before);
    	//out.print(after); 
    	
    	Calendar cal = Calendar.getInstance();
    	int nYear = cal.get(Calendar.YEAR);
    	int nMonth = cal.get(Calendar.MONTH)+1;
    	if(before==null && after==null)
    	{
    		selectYear = nYear;
    		selectMonth = nMonth;
    	}
    	if(before!=null)
    	{
    		selectMonth -= 1;
    		if(selectMonth==0)
    		{
    			selectMonth = 12;
    			selectYear -=1;
    		}
    	}
    	if(after!=null)
    	{
    		selectMonth += 1;
    		if(selectMonth==13)
    		{
    			selectMonth = 1;
    			selectYear +=1;
    		}
    	}
    	// 달력 준비
    	int[] month = {31,28,31,30,31,30,31,31,30,31,30,31};
    	String[] date = {"일","월","화","수","목","금","토"};
    	if (selectYear%4==0 && selectYear%100!=0 || selectYear%400==0)
    		month[1]=29;
    	int nalsu = 0;
    	
    	nalsu = (selectYear-1)*365 + (selectYear-1)/4 - (selectYear-1)/100 + (selectYear-1)/400;
    	for (int i=0; i<(selectMonth-1); i++)
    		nalsu += month[i];
    	nalsu++;
    	
    	int yoil = nalsu%7;
    	int lastDay = month[selectMonth-1];
    	
    	// 달력 그리기
    	String calStr ="";
    	calStr += "<table style='margin: auto; width:300px; background-color: #f1f1f1; padding: 20px; border-radius: 10px;text-align: right;'>";
    	calStr += "<tr>";
    	//-- 일 ~ 월
    	for(int i=0; i<date.length; i++)
    	{
    		if(i==0)
    			calStr += "<th style='color: red'>"+ date[i] + "</th>";
    		else if(i==6)
    			calStr += "<th style='color: blue'>"+ date[i] + "</th>";
    		else
    			calStr += "<th>" + date[i] + "</th>";
    	}
    	calStr += "</tr><tr>";
    	//-- 칸에 맞춰 날 그리기
    	for(int i=0; i<yoil; i++)
    		calStr += "<td></td>";
    		
    	for(int i=1; i<=lastDay; i++)
    	{
    		yoil++;
    		if(yoil%7==0)
    		{
    			calStr += "<td style='color: blue'>"+ i +"</td>";
    			calStr += "</tr><tr>";
    		}
    		else if(yoil%7==1)
    			calStr += "<td style='color: red'>"+ i +"</td>";
    		else
    			calStr += "<td>" + i + "</td>";
    	}
    	
    	for(int i=0; i<=yoil; i++, yoil++)
    	{
    		if(yoil%7==0)
    			break;
    		calStr += "<td></td>";
    	}
    	
    	if(yoil%7!=0)
    		calStr += "</tr>";
    	calStr += "</table>";	
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>SendAndReceive08.jsp</title>
    <style type="text/css">
    	* {text-align: center;}
    	a {text-decoration : none;}
    </style>
    </head>
    <body>
    <div>
    	<h1>데이터 송수신 실습 08</h1>
    	<hr>
    </div>
    <div>
    <!-- 
    	○ 데이터 송수신 실습 08
    	
    		- 달력을 출력하는 JSP 페이지를 구성한다.
    		
    		- 연도와 월을 선택받아 화면에 출력해주는 형태의 페이지로 구현한다.
    		
    		- 단, submit 버튼 없이 이벤트 처리를 할 수 있도록 한다.
    		
    		- 현재 페이지에서 전송한 내용을 현재 페이지에서 수신해서 출력해주는 형태의 페이지로 구성한다.
    		
    		<a>           <a>
    		↓            ↓
    		◀ 2023년 5월 ▶
    		---------------
    		---------------
    		--------------- ← 해당 년, 월의 달력	
    		---------------	
    		---------------	
    		
    		- ◀ 나 ▶ 클릭 시
    		  해당 년 월의 달력을 출력해주는 형태의 페이지로 구현한다.
    		  
    		- 사용자 최초 요청 주소
    		  http://localhost:8090/WebApp07/WebContent/SendAndReceive08.jsp
    		
    	○ 물리적 파일 구성
    	
    		- SendAndReceive08.jsp
    -->
    </div>
    <div>
    	<form action="" id="form" method="get">
    		<!-- 년 월은 유동적으로 구성되어야함 -->
    		<a href='?before=before' name="before" id="before">◀</a>
    		<!-- 몇 년 몇 월인지 들어가야함 -->
    		<%=selectYear %> 년 <%=selectMonth %> 월
    		<a href='?after=after' name="after" id="after ">▶</a>
    	</form>
    </div>
    <br>
    <div>
    	<!-- 달력 구성 -->
    	<%=calStr %>
    </div>
    
    
    </body>
    </html>

    ※ 데이터 송수신 실습 01~06 : html -> jsp
                          "             07~08 : jsp (자기 자신에게 데이터 송신)
                          "             09~     : jsp -> jsp // 동적인 페이지 구성


    • Send09 & Receive09
    <%@ page contentType="text/html; charset=UTF-8"%>
    <%
    	String result = "";
    
    	result += "<ul>";
    	
    	for (int i=1; i<=9; i++)
    	{
    		/* -- 내 풀이 
    		result += String.format("<a href='Receive09.jsp?dan=%d'><li>%d단</li><a>", i, i);
    		 */
    		// 링크 걸기
    		//result += String.format("<li><a href=''>%d단<a></li>", i);
    		// 요청페이지?이름=값 을 넘길 수 있다. -- 이때의 이름은 넘기는 페이지에서 값을 불러오는데 사용 
    		//result += String.format("<li><a href='Receive09.jsp?gugudan=%d'>%d단<a></li>", i, i);
    		// ※ System.out.printf("%3$d 와 %2$d 와 %1$d", 10, 20 , 30) --> 30와 20와 10 처럼
    		// -- 원하는 순서대로 값을 넣을 수 있다.
    		result += String.format("<li><a href='Receive09.jsp?gugudan=%1$d'>%1$d단<a></li>", i);
    	}
    	
    	result += "</ul>";
    	
    	
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Send09.jsp</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    <style type="text/css">
    	a {text-decoration: none;}
    </style>
    </head>
    <body>
    <div>
    	<h1>데이터 송수신 실습 09</h1>
    	<hr>
    </div>
    <div>
    <!-- 
    	○ 데이터 송수신 실습 09
    	
    	  - a 태그(링크 태그)에 대한 반복문 처리를 하는 JSP 페이지를 구성한다.
    	  
    	  - 이를 활용하여 구구단 리스트를 동적으로 구성하여
    	    선택에 따른 결과 페이지를 출력해주는 형태의 페이지(→ Receive09.jsp)로 구현한다.
    	    
    	  - submit 버튼 없이 이벤트 처리를 할 수 있도록 한다.
    	  
    	    구구단 선택
    	    
    	    1단 	← 목록 구성
    	    2단
    	     : 
    	    8단
    	    9단
    	  
    	  - 페이지를 구성하고 있는 목록의 특정 단을 선택(클릭)했을 때
    	    해당 단의 구구단을 출력해주는 형태의 페이지로 구현한다.
    	    
    	  - 사용자 최초 요청 주소
    	    http://localhost:8090/WebApp07/Send09.jsp
    	    
    	○ 물리적 파일 구성
    	
    	  - Send09.jsp
    	  - Receive09.jsp
    -->
    </div>
    	<h2>구구단 선택</h2>
    	<%=result %>
    <div>
    
    </div>
    </body>
    </html>

    <%@ page contentType="text/html; charset=UTF-8"%>
    <%-- <%
    	// 내 풀이
    	String danStr = request.getParameter("dan");
    	//out.print(dan);
    	
    	int dan=0;
    	String result = "";
    	try
    	{
    		dan = Integer.parseInt(danStr);
    		for(int i=1; i<=9; i++)
    		{
    			result += dan + " * " + i + " = " + (dan*i) + "<br>"; 
    		}
    		
    	}
    	catch(Exception e)
    	{
    		System.out.println(e.toString());
    	}
    %>
     --%>
    <%
    	// 이전 페이지(Send09.jsp) 로부터 데이터 수신
    	// → gugudan
    	
    	String gugudanStr = request.getParameter("gugudan");
    	int gugudan = 0;
    	String result = "";
    	
    	try
    	{
    		gugudan = Integer.parseInt(gugudanStr);
    		for(int i=1; i<=9; i++)
    		{
    			result += String.format("%d * %d = %d<br>", gugudan, i , (gugudan*i)); 
    		}
    	}
    	catch(Exception e)
    	{
    		System.out.println(e.toString());
    	}
    %>
    <!DOCTYPE html>
    <html>
    <head>
    <meta charset="UTF-8">
    <title>Receive09.jsp</title>
    <link rel="stylesheet" type="text/css" href="css/main.css">
    </head>
    <body>
    <div>
    	<h1>데이터 송수신 실습 09</h1>
    	<hr>
    </div>
    <div>
    	<h2>수신된 데이터 : <%=gugudanStr %></h2>
    	<%=result %>
    </div>
    </body>
    </html>
    728x90
Designed by planet-si