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 & JDBC & Oracle] 20231213 [프로그램소스 (JAVA Bean + JSP)] - ScoreDTO, ScoreDAO, ScoreList, ScoreInsert 본문

[JSP & JDBC & Oracle]/Program source (JSP & JDBC & Oracle)

[JSP & JDBC & Oracle] 20231213 [프로그램소스 (JAVA Bean + JSP)] - ScoreDTO, ScoreDAO, ScoreList, ScoreInsert

Jelly-fish 2023. 12. 13. 13:28

 

WebApp11


01
ScoreList, ScoreInsert(페이지 뒷단 Logic 처리, 데이터베이스 연결)


 

 

ScoreDTO.java

 

package com.test;

public class ScoreDTO
{

	private String name, sid;
	private int kor, eng, mat, tot;
	private double avg;
	
	public String getSid()
	{
		return sid;
	}
	public void setSid(String sid)
	{
		this.sid = sid;
	}
	public String getName()
	{
		return name;
	}
	public void setName(String name)
	{
		this.name = name;
	}
	public int getKor()
	{
		return kor;
	}
	public void setKor(int kor)
	{
		this.kor = kor;
	}
	public int getEng()
	{
		return eng;
	}
	public void setEng(int eng)
	{
		this.eng = eng;
	}
	public int getMat()
	{
		return mat;
	}
	public void setMat(int mat)
	{
		this.mat = mat;
	}
	public int getTot()
	{
		return tot;
	}
	public void setTot(int tot)
	{
		this.tot = tot;
	}
	public double getAvg()
	{
		return avg;
	}
	public void setAvg(double avg)
	{
		this.avg = avg;
	}

}

 


 

 

ScoreDAO.java

 

package com.test;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;

import com.util.DBConn;

public class ScoreDAO
{
	
	private Connection conn;
	
	// 1. 연결 (생성자)
	
	public ScoreDAO() throws ClassNotFoundException, SQLException
	{
		conn = DBConn.getConnection();
	}
	
	
	
	// 2. add
	
	public int add(ScoreDTO dto) throws SQLException
	{
		int result = 0;
		
		// 쿼리문 준비
		String sql = "INSERT INTO TBL_SCORE(SID, NAME, KOR, ENG, MAT) VALUES(SCORESEQ.NEXTVAL, ?, ?, ?, ?)";
		
		
		// PreparedStatement 객체 생성
		
		PreparedStatement pstmt = conn.prepareStatement(sql);
		
		// 값 채워주기
		pstmt.setString(1, dto.getName());
		pstmt.setInt(2, dto.getKor());
		pstmt.setInt(3, dto.getEng());
		pstmt.setInt(4, dto.getMat());
	
		
		// executeUpdate
		
		result = pstmt.executeUpdate();
		
		return result;
	}
	
	
	// 3. 출력
	
	public ArrayList<ScoreDTO> lists() throws SQLException
	{
		ArrayList<ScoreDTO> scoList = new ArrayList<ScoreDTO>();
		
		// 쿼리문 준비
		
		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";
		
		// PreparedStatement 객체 생성
		PreparedStatement pstmt = conn.prepareStatement(sql);
		
		// pstmt.executeQuery()
		ResultSet rs = pstmt.executeQuery();
		
		while(rs.next())
		{
			ScoreDTO dto = new ScoreDTO();
			
			dto.setSid(rs.getString("SID"));
			dto.setName(rs.getString("NAME"));
			dto.setKor(rs.getInt("KOR"));
			dto.setEng(rs.getInt("ENG"));
			dto.setMat(rs.getInt("MAT"));
			dto.setTot(rs.getInt("TOT"));
			dto.setAvg(rs.getDouble("AVG"));
			
			scoList.add(dto);
		}
		
		return scoList;
		
	}

	
	
	
	// 4. 닫기
	public void close() throws SQLException
	{
		DBConn.close();
	}

}

 

 

ScoreList.jsp

 

<%@page import="com.test.ScoreDTO"%>
<%@page import="com.test.ScoreDAO"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<% 
	StringBuffer str = new StringBuffer();
	
	ScoreDAO dao = null;
	
	
	
	str.append("<table border='1' class='table'>");
	str.append("<tr>");
	str.append("<th>번호</th>");
	str.append("<th>이름</th>");
	str.append("<th>국어점수</th>");
	str.append("<th>영어점수</th>");
	str.append("<th>수학점수</th>");
	str.append("<th>총점</th>");
	str.append("<th>평균</th>");
	str.append("</tr>");

	
	
	try
	{
		dao = new ScoreDAO();
		
		for (ScoreDTO dto : dao.lists())
		{
			str.append("<tr>");
			str.append("<td>" + dto.getSid() + "</td>");
			str.append("<td>" + dto.getName() + "</td>");
			str.append("<td>" + dto.getKor() + "</td>");
			str.append("<td>" + dto.getEng() + "</td>");
			str.append("<td>" + dto.getMat() + "</td>");
			str.append("<td>" + dto.getTot() + "</td>");
			str.append("<td>" + String.format("%.1f", dto.getAvg()) + "</td>");
			str.append("</tr>");
		}
		
		
		str.append("</table>");
	}
	catch(Exception e)
	{
		System.out.println(e.toString());
	}


%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>ScoreList.jsp</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
<style type="text/css">
	.err {color: red; font-size: small; display: none;}
	td {text-align: center;}
</style>
<script type="text/javascript">
	
	function formCheck()
	{
		
		var stuName = document.getElementById("stuName");
		var strKor = document.getElementById("kor");
		var strEng = document.getElementById("eng");
		var strMat = document.getElementById("mat");
		
	
		var kor = parseInt(strKor.value);
		var eng = parseInt(strEng.value);
		var mat = parseInt(strMat.value);

		errName.style.display = "none";
		errKor.style.display = "none";
		errEng.style.display = "none";
		errMat.style.display = "none";
		
		if (stuName.value == "")
		{
			errName.style.display = "inline";
			return false;
		}
		
		if (kor < 0 || kor > 100 || strKor.value == "" || isNaN(strKor.value))
		{
			errKor.style.display = "inline";
			return false;
		}
		if (eng < 0 || eng > 100 || strEng.value == "" || isNaN(strEng.value))
		{
			errEng.style.display = "inline";
			return false;
		}
		if (mat < 0 || mat > 100 || strMat.value == "" || isNaN(strMat.value))
		{
			errMat.style.display = "inline";
			return false;
		}
		
		
		return true;
	}
	
</script>

</head>
<body>

<div>
	<form action="ScoreInsert.jsp" method="post" onsubmit="return formCheck()">
		<table>
			<tr>
				<th>이름</th>
				<td>
					<input type="text" name="stuName" id="stuName" class="txt">
					
				</td>
				<td>
					<p name="errMsg" id="errName" class="err">이름은 필수 입력사항 입니다.</p>
				</td>
			</tr>
			<tr>
				<th>국어점수</th>
				<td>
					<input type="text" name="kor" id="kor" class="txt">
				</td>
				<td>
					<p name="errMsg" id="errKor" class="err">국어점수를 0~100 까지의 정수로 입력하세요.</p>
				</td>
			</tr>	
			<tr>
				<th>영어점수</th>
				<td>
					<input type="text" name="eng" id="eng" class="txt">
				</td>
				<td>
					<p name="errMsg" id="errEng" class="err">영어점수를 0~100 까지의 정수로 입력하세요.</p>
				</td>
			</tr>	
			<tr>
				<th>수학점수</th>
				<td>
					<input type="text" name="mat" id="mat" class="txt">
				</td>
				<td>
					<p name="errMsg" id="errMat" class="err">수학점수를 0~100 까지의 정수로 입력하세요.</p>
				</td>
			</tr>
			<tr>
				<td colspan="2">
					<input type="submit" class="btn" value="성적입력">
				</td>
			</tr>	
		</table>
	</form>
</div>

<div>
<%= str.toString() %>
</div>

</body>
</html>

 

 

ScoreInsert.jsp

 

 

<%@page import="com.test.ScoreDAO"%>
<%@page import="com.test.ScoreDTO"%>
<%@ page contentType="text/html; charset=UTF-8"%>
<% 
	// 데이터 입력 처리
	
	// 넘겨져 온 값
	// stuName, kor, eng, mat
	
	request.setCharacterEncoding("UTF-8");
	
	String name = request.getParameter("stuName");
	String strKor = request.getParameter("kor");
	String strEng = request.getParameter("eng");
	String strMat = request.getParameter("mat");

	
	ScoreDAO dao = null;
	int result = 0;
	int kor, eng, mat;
	
	try
	{
		
		dao = new ScoreDAO();
		
		kor = Integer.parseInt(strKor);		
		eng = Integer.parseInt(strEng);		
		mat = Integer.parseInt(strMat);
		
		ScoreDTO dto = new ScoreDTO();
		
		dto.setName(name);
		dto.setKor(kor);
		dto.setEng(eng);
		dto.setMat(mat);
		
		result = dao.add(dto);
	
		
		
		if (result < 0)
		{
			response.sendRedirect("Error.jsp");		
		}
		else
		{
			response.sendRedirect("ScoreList.jsp");
		}

		
		
	}
	catch(Exception e)
	{
		System.out.println(e.toString());
	}
	
%>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" type="text/css" href="css/main.css">
</head>
<body>

</body>
</html>