쌍용교육(JAVA)/Servlet

선택 안됨 쌍용교육 -Servlet수업 45일차 ch03(2)

구 승 2024. 4. 22. 15:04

TodayMenu

package kr.web.ch03;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/todayMenu")
public class TodayMenu extends HttpServlet {
	@Override
	public void doPost(HttpServletRequest request,
			HttpServletResponse response)
					throws ServletException, IOException{
		
		//문서 타입 및 캐릭터셋 지정
		response.setContentType("text/html;charset=utf-8"); //html을 사용하고 utf-8방식을 사용할 것이다.
		
		//POST 방식으로 데이터 전송시 전송된 데이터 인코딩 타입 지정
		request.setCharacterEncoding("utf-8");
		
		//HTML 출력을 위한 출력 스트림 생성
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<head><title>점심메뉴</title></head>");
		out.println("<body>");
		out.println("<h3>오늘점심은</h3>");
		//다중값인 경우 배열로
		String[] values = request.getParameterValues("lunch");
		if(values != null) {
			for(int i =0; i<values.length;i++) {
				out.println(values[i]+"<br>");
			}
			}else {
				
				out.println("선택한 점심 메뉴가 없습니다.");
			}
			
		
		
		out.println("</body>");
		out.println("</html>");
		out.close();
	}
}

lunchForm.html

package kr.web.ch03;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/todayMenu")
public class TodayMenu extends HttpServlet {
	@Override
	public void doPost(HttpServletRequest request,
			HttpServletResponse response)
					throws ServletException, IOException{
		
		//문서 타입 및 캐릭터셋 지정
		response.setContentType("text/html;charset=utf-8"); //html을 사용하고 utf-8방식을 사용할 것이다.
		
		//POST 방식으로 데이터 전송시 전송된 데이터 인코딩 타입 지정
		request.setCharacterEncoding("utf-8");
		
		//HTML 출력을 위한 출력 스트림 생성
		PrintWriter out = response.getWriter();
		out.println("<html>");
		out.println("<head><title>점심메뉴</title></head>");
		out.println("<body>");
		out.println("<h3>오늘점심은</h3>");
		//다중값인 경우 배열로
		String[] values = request.getParameterValues("lunch");
		for(int i =0; i<values.length;i++) {
			out.println(values[i]+"<br>");
		}
		out.println("</body>");
		out.println("</html>");
		out.close();
	}
}

 

 

 

TravelServlet.java

package kr.web.ch03;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/travel")
public class TravelServlet extends HttpServlet{
	@Override
	public void doPost(HttpServletRequest request,
			HttpServletResponse response)
					throws ServletException, IOException{

		//여행지 출력시
		//서울,뉴욕,파리

		//문서 타입 및 캐릭터셋 지정
		response.setContentType("text/html;charset=utf-8"); 

		//POST 방식으로 데이터 전송시 전송된 데이터 인코딩 타입 지정
		request.setCharacterEncoding("utf-8");

		//HTML 출력을 위한 출력 스트림 생성
		PrintWriter out = response.getWriter();
		String name = request.getParameter("name");

		out.println("<html>");
		out.println("<head><title>여행지 선택</title></head>");
		out.println("<body>");
		String values[] = request.getParameterValues("city");
		if(values != null) {
			out.println(name+"님이 가고자하는 여행지는<br>");
			for(int i = 0; i < values.length; i++) {
			    out.println(values[i]);
			    //if(i>0) out.print(",");
			    if(i < values.length - 1) {
			        out.print(",");
			    }
			}

		}else {
			out.println("가려는 여행지가 없습니다.");
		}
		out.println("</body>");
		out.println("</html>");
		out.close();
	}
}

travelForm.html

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>[실습]여행지 선택</title>
<script type="text/javascript">
window.onload=function(){
	//폼태그 이벤트 연결
	const myForm = document.getElementById('myForm');
	myForm.onsubmit = function(){
		//이름 필수 입력 유효성 체크
		const name = document.getElementById('name');
			if(name.value.trim() == ''){
				alert("이름을 입력하세요");
				name.focus();
				name.value='';
				return false;
			}
		//여행지는 2이상 필수 선택
			const cities = document.getElementsByClassName('cb-city');
			let count = 0;
			for(let i=0; i<cities.length; i++){
				if(cities[i].checked){
					count++;
				}	
			}
			if(count<2){
				alert("여행지를 2개이상 입력하세요!");
				return false;
			}
	};
		
	
	
};
</script>
</head>
<body>
	<!-- 
action: ch03_JSP/travel
method:post

이름:name <-input type="text" 여행지 선택(city) <-input type="checkbox"
								(서울,뉴욕,런던,파리)			
 -->
	<h3>여행지를 선택하세요(2개이상)</h3>
	<form action="/ch03_JSP/travel" method="post" id="myForm">
		이름:<input type="text" name="name" id="name"><br> 여행지 선택<br>
		<input type="checkbox" name="city" value="서울" class="cb-city">서울
		<input type="checkbox" name="city" value="뉴욕" class="cb-city">뉴욕
		<input type="checkbox" name="city" value="런던" class="cb-city">런던
		<input type="checkbox" name="city" value="파리" class="cb-city">파리
		<input type="submit" value="전송">
	</form>
</body>
</html>

 

ScoreServlet.java 
나의 답

package kr.web.ch03;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/score")
public class ScoreServlet extends HttpServlet{
	@Override
	public void doPost(HttpServletRequest request,
			HttpServletResponse response)
					throws ServletException, IOException{

		//성적 처리
		//국어,영어,수학,총점,평균,등급 출력




		//문서 타입 및 캐릭터셋 지정
		response.setContentType("text/html;charset=utf-8"); 

		//POST 방식으로 데이터 전송시 전송된 데이터 인코딩 타입 지정
		request.setCharacterEncoding("utf-8");

		//HTML 출력을 위한 출력 스트림 생성
		PrintWriter out = response.getWriter();
		int korean = Integer.parseInt(request.getParameter("korean"));
		int english = Integer.parseInt(request.getParameter("english"));
		int math = Integer.parseInt(request.getParameter("math"));
		int sum = korean+english+math; 
		int avg = sum/3;
		String grade = "";
				
		out.println("<html>");
		out.println("<head><title></title></head>");
		out.println("<body>");
		out.println("국어 : "+korean+"점<br>");
		out.println("영어 : "+english+"점<br>");
		out.println("수학 : "+math+"점<br>");
		out.println("총점 : "+sum+"점<br>");
		out.println("평균 : "+avg+"점<br>");
		if(avg>=90 && avg<=100) {
			grade ="A";
			out.println("등급 : "+grade+"<br>");
		}else if(avg>=80 && avg<90) {
			grade ="B";
			out.println("등급 : "+grade+"<br>");
		}else if(avg>=70 && avg<80) {
			grade ="C";
			out.println("등급 : "+grade+"<br>");
		}else if(avg>=60 && avg<70) {
			grade ="D";
			out.println("등급 : "+grade+"<br>");
		}else if(avg<60) {
			grade ="F";
			out.println("등급 : "+grade+"<br>");
		}else {
			out.println("등급을 매길 수 없습니다.");
		}
		out.println("</body>");
		out.println("</html>");
		out.close();
	}
}

ScoreServlet.java 
강사님 답

package kr.web.ch03;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/score")
public class ScoreServlet extends HttpServlet{
	@Override
	public void doPost(HttpServletRequest request,
			HttpServletResponse response)
					throws ServletException, IOException{

		//성적 처리
		//국어,영어,수학,총점,평균,등급 출력




		//문서 타입 및 캐릭터셋 지정
		response.setContentType("text/html;charset=utf-8"); 

		//POST 방식으로 데이터 전송시 전송된 데이터 인코딩 타입 지정
		request.setCharacterEncoding("utf-8");

		//HTML 출력을 위한 출력 스트림 생성
		PrintWriter out = response.getWriter();
		int korean = Integer.parseInt(request.getParameter("korean"));
		int english = Integer.parseInt(request.getParameter("english"));
		int math = Integer.parseInt(request.getParameter("math"));
		int sum = korean+english+math; 
		int avg = sum/3;
		
		String grade ;
		switch(avg/10) {
		case 10: grade = "A"; break;
		case 9: grade = "B"; break;
		case 8: grade = "C"; break;
		case 7: grade = "D"; break;
		case 6: grade = "E"; break;
		default:grade = "F";
		}
				
		out.println("<html>");
		out.println("<head><title>성적 처리</title></head>");
		out.println("<body>");
		out.println("국어 : "+korean+"점<br>");
		out.println("영어 : "+english+"점<br>");
		out.println("수학 : "+math+"점<br>");
		out.println("총점 : "+sum+"점<br>");
		out.println("평균 : "+avg+"점<br>");
		out.println("등급 : "+grade+"<br>");
		out.println("</body>");
		out.println("</html>");
		out.close();
	}
}

scoreForm.html
내답

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>[실습]성적 처리</title>
<script type="text/javascript">
window.onload=function(){
	const myform = document.getElementById("myForm");
	myform.onsubmit = function(){
		const kr = document.getElementById("korean");
		if(kr.value.trim() == ''){
			alert("국어 점수를 입력하시오.");
			kr.focus();
			kr.value ='';
			return false;
		}
		if(kr.value <0 || kr.value >100){
			alert("점수는 0이상 100이하로 입력하시오");
			kr.focus();
			kr.value ='';
			return false;
		}
		const eg = document.getElementById("english");
		if(eg.value.trim() == ''){
			alert("영어 점수를 입력하시오.");
			eg.focus();
			eg.value ='';
			return false;
		}
		if(eg.value <0 || eg.value >100){
			alert("점수는 0이상 100이하로 입력하시오");
			eg.focus();
			eg.value ='';
			return false;
		}
		const mt = document.getElementById("math");
		if(mt.value.trim() == ''){
			alert("수학 점수를 입력하시오.");
			mt.focus();
			mt.value ='';
			return false;
		}
		if(mt.value <0 || mt.value >100){
			alert("점수는 0이상 100이하로 입력하시오");
			mt.focus();
			mt.value ='';
			return false;
		}
		
	};
};
</script>
</head>
<body>
<form id="myForm" action="/ch03_JSP/score" method="post">
	<ul>
		<li>
			<label for ="korean">국어</label>
			<input type="number" name="korean" id="korean">
		</li>
		<li>
			<label for ="english">영어</label>
			<input type="number" name="english" id="english">
		</li>
		<li>
			<label for ="math">수학</label>
			<input type="number" name="math" id="math">
		</li>
	</ul>
	<input type="submit" value="전송">
</form>
</body>
</html>

 

scoreForm.html
강사님 답

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>[실습]성적 처리</title>
<script type="text/javascript">
window.onload=function(){
	const myform = document.getElementById("myForm");
	myform.onsubmit = function(){
		//반복문을 이용한 유효성 체크
		const items = document.querySelectorAll('input[type="text"]');
		
		for(let i=0; i<items.length;i++){
			//입력을 하지 않았거나 공백 입력한 경우
			if(items[i].value.trim()==''){
				const label = document.querySelector('label[for="'+items[i].id+'"]');
				const label_text = label.textContent;
				alert(label_text + ' 항목은 필수 입력');
				items[i].value = '';
				items[i].focus();
				return false;
			}
			//문자인지 숫자인지 입력
			if(isNaN(items[i].value)){
				alert('성적은 숫자만 가능');
				items[i].value = '';
				items[i].focus();
				return false;
			}
			//0~100 값만 인정
			if(items[i].value <0 ||items[i].value>100){
				alert('0부터 100까지만 입력가능');
				items[i].value = '';
				items[i].focus();
				return false;
			}
		}
	};
};
</script>
</head>
<body>
<form id="myForm" action="/ch03_JSP/score" method="post">
	<ul>
		<li>
			<label for ="korean">국어</label>
			<input type="text" name="korean" id="korean">
		</li>
		<li>
			<label for ="english">영어</label>
			<input type="text" name="english" id="english">
		</li>
		<li>
			<label for ="math">수학</label>
			<input type="text" name="math" id="math">
		</li>
	</ul>
	<input type="submit" value="전송">
</form>
</body>
</html>