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
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>