📚 Study/JSP & Servlet

JSP & Servlet :: 데이터베이스 연결 실습 (성적 처리 프로그램)

bono-hye 2023. 12. 13. 20:11

💻 성적 처리 프로그램

📃 n명의 이름과 각 과목별 성적을 입력받아 총점과 평균을 계산하여 리스트를 출력해주는 프로그램 구현

# ScoreList.jsp

① 페이지 레이아웃 구성 코드

<div>
	<form action="ScoreInsert.jsp" method="post" onsubmit="return formCheck()">
		<table>
			<tr>
				<th>이름(*)</th>
				<td>
				<input type="text" id="userName" name="userName">
				<span class="errMsg" id="nameErr">이름을 입력해주세요.</span>
				</td>
			</tr>
			<tr>
				<th>국어점수</th>
				<td>
				<input type="text" id="kor" name="kor">
				<span class="errMsg" id="korErr">0 ~ 100 사이의 정수를 입력해주세요.</span>
				</td>
			</tr>
			<tr>
				<th>영어점수</th>
				<td>
				<input type="text" id="eng" name="eng">
				<span class="errMsg" id="engErr">0 ~ 100 사이의 정수를 입력해주세요.</span>
				</td>
			</tr>
			<tr>
				<th>수학점수</th>
				<td>
				<input type="text" id="mat" name="mat">
				<span class="errMsg" id="matErr">0 ~ 100 사이의 정수를 입력해주세요.</span>
				</td>
			</tr>
			<tr>
				<th></th>
				<td>
				<button type="submit" id="btnAdd" class="btn control">성적 추가</button>
				</td>
			</tr>
		</table>
	</form>
	<br><br>
</div>

➰ 체크할 내용

1) onsubmit

 - 자바스크립트에서 함수 호출하여 true가 반환될 경우에 요청한 페이지를 submit할 수 있도록 하는 코드

2) <span> 태그를 사용해서 display: none, display:inline을 통해 안내 메세지 보여주고 가려주고 하기!

스크립릿영역에서 str (테이블 생성 문자열) 완성되면 표현식으로 넣어주기 <%=str >

 

 

② 자바스크립트 영역 구성 코드

<script type="text/javascript">

	function formCheck()
	{
		var userName = document.getElementById("userName");
		var nameErr = document.getElementById("nameErr");
		var korErr = document.getElementById("korErr");
		var engErr = document.getElementById("engErr");
		var matErr = document.getElementById("matErr");
		
		var kor = document.getElementById("kor");
		var eng = document.getElementById("eng");
		var mat = document.getElementById("mat");
		
		nameErr.style.display = "none";
		korErr.style.display = "none";
		engErr.style.display = "none";
		matErr.style.display = "none";
		
		if (userName.value == "")
		{
			nameErr.style.display = "inline";
			return false;
		}
		if (kor.value == "" || kor.value <0 || kor.value >100)
		{
			korErr.style.display = "inline";
			return false;
		}
		if (eng.value == "" || eng.value <0 || eng.value >100)
		{
			engErr.style.display = "inline";
			return false;
		}
		if (mat.value == "" || mat.value <0 || mat.value >100)
		{
			matErr.style.display = "inline";
			return false;
		}
		return true;
	}					
</script>

➰ 체크할 내용 

1) 조건문

 - 해당 조건에 걸리는 상황들은 return false가 되도록 하여 submit이 되지 않도록 막고

    조건에 모두 통과한 경우는 return true로 form submit~!!

 

③ 스크립릿 영역 구성 코드

<%@page import="java.sql.ResultSet"%>
<%@page import="java.sql.Statement"%>
<%@page import="com.util.DBConn"%>
<%@page import="java.sql.Connection"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%
	String str = "";

	Connection conn = DBConn.getConnection();
	
	String sql = "SELECT SID, NAME, KOR, ENG, MAT, (KOR+ENG+MAT) AS TOT, (KOR+ENG+MAT)/3 AS AVG FROM TBL_SCORE ORDER BY SID";
	
	Statement stmt = conn.createStatement();
	
	ResultSet rs = stmt.executeQuery(sql);
	
	str += "<table class='table'>";
	str += "<tr>";
	str += "<th id='numTitle'>번호</th>";
	str += "<th id='nameTitle'>이름</th>";
	str += "<th id='korTitle'>국어점수</th>";
	str += "<th id='engTitle'>영어점수</th>";
	str += "<th id='matTitle'>수학점수</th>";
	str += "<th id='totTitle'>총점</th>";
	str += "<th id='avgTitle'>평균</th>";
	str += "</tr>";
	
	while(rs.next())
	{
		str += "<tr>";
		str += "<td class='contentTd'>" + rs.getString("SID") + "</td>";
		str += "<td class='contentTd'>" + rs.getString("NAME") + "</td>";
		str += "<td class='contentTd'>" + rs.getString("KOR") + "</td>";
		str += "<td class='contentTd'>" + rs.getString("ENG") + "</td>";
		str += "<td class='contentTd'>" + rs.getString("MAT") + "</td>";
		str += "<td class='contentTd'>" + rs.getString("TOT") + "</td>";
		str += "<td class='contentTd'>" + rs.getString("AVG") + "</td>";
		str += "</tr>";
	}
	
	str += "</table>";
	
	rs.close();
	stmt.close();
	DBConn.close();
%>

 

# ScoreInsert.jsp

<%@page import="java.sql.Statement"%>
<%@page import="java.sql.ResultSet"%>
<%@page import="com.util.DBConn"%>
<%@page import="java.sql.Connection"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<%
	request.setCharacterEncoding("UTF-8");

	String userName = request.getParameter("userName");
	String korStr = request.getParameter("kor");
	String engStr = request.getParameter("eng");
	String matStr = request.getParameter("mat");

	int kor = Integer.parseInt(korStr);
	int eng = Integer.parseInt(engStr);
	int mat = Integer.parseInt(matStr);

	Connection conn = DBConn.getConnection();
	
	String sql = String.format("INSERT INTO TBL_SCORE(SID, NAME, KOR, ENG, MAT)"
			           + "VALUES(SCORESEQ.NEXTVAL, '%s', %d, %d, %d)", userName, kor, eng, mat);
	
	Statement stmt = conn.createStatement();
	int result = 0;
	result = stmt.executeUpdate(sql);
	
	stmt.close();
	DBConn.close();
	
	if (result<1)
	{
		response.sendRedirect("Error.jsp");
	}
	else
		response.sendRedirect("ScoreList.jsp");
%>