본문 바로가기
Backend

08월 29일 목 | JSP 07 - JSP Java beans을 이용한 성적프로그램

by 구라미 2019. 8. 29.

 

Java Beans를 이용해

뷰페이지와 기능이 있는 부분을 분리한 성적프로그램이다.

디렉토리 구조는 아래와 같다.

 

 

 

1. 함수

Java Resources -> src -> net.sungjuk

SungjukDAO.java CRUD를 위한 함수들이 담긴 java
SungjukDTO.java CRUD를 위한 필드,객체들이 담긴 java

 

 

1) SungjukDAO.java

성적프로그램에 들어가는 기능, 함수들이 모여있는 java파일

여러 메소드들이 있다.

 

함수들을 담아놓는 페이지

package net.sungjuk;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.util.ArrayList;

import net.utility.DBOpen;
import net.sungjuk.SungjukDTO;

//DAO Data Access Object라는 뜻이다.
public class SungjukDAO {
	
	//1) - 1 성적데이터 삽입 
	public int insert(String uname, int kor, int eng, int mat, int aver, String addr){		
		int cnt = 0; //초기값 0, cnt는 행의 갯수를 담을 변수이다.
		try {			
			//1. DB연결: DBOpen.java와 연결한다.
			Connection con=DBOpen.getConnetion();
			StringBuilder sql = new StringBuilder();
			
			//2. Insert SQL문 작성
			sql.append(" INSERT INTO SUNGJUK(SNO,UNAME,KOR,ENG,MAT,AVER,ADDR,WDATE) ");
			sql.append(" VALUES((SELECT NVL(MAX(SNO),0)+1 FROM SUNGJUK) ");
			sql.append(",?,?,?,?,?,?,SYSDATE) "); 
			
			//3. SQL문 변환
			PreparedStatement pstmt = con.prepareStatement(sql.toString());				
			//4. Value값 불러오기
			pstmt.setString(1, uname);
			pstmt.setInt(2, kor);
			pstmt.setInt(3, eng);
			pstmt.setInt(4, mat);
			pstmt.setInt(5, aver);
			pstmt.setString(6, addr);
			
			//5. 실행
			cnt = pstmt.executeUpdate();				
			} catch(Exception e){
				System.out.println("행추가일때: "+e);
		} 
		//6. 행갯수 리턴
		return cnt;
	}//insert end
	
	//1) - 2 성적데이터 삽입
	public int insert(SungjukDTO dto){
		int cnt=0;
		try{
			//1. DB연결: DBOpen.java와 연결한다.			
			Connection con=DBOpen.getConnetion();
			StringBuilder sql = new StringBuilder();
			
			//2. Insert SQL문 작성
			sql.append(" INSERT INTO SUNGJUK(SNO,UNAME,KOR,ENG,MAT,AVER,ADDR,WDATE) "); 
			sql.append(" VALUES((SELECT NVL(MAX(SNO),0)+1 FROM SUNGJUK) ");
			sql.append(",?,?,?,?,?,?,SYSDATE) ");
			
			//3. SQL문 변환
			PreparedStatement pstmt = con.prepareStatement(sql.toString());
			
			//4. Value값 불러오기
			pstmt.setString(1, dto.getUname());
			pstmt.setInt(2, dto.getKor());
			pstmt.setInt(3, dto.getEng());
			pstmt.setInt(4, dto.getMat());
			pstmt.setInt(5, dto.getAver());
			pstmt.setString(6, dto.getAddr());
			
			//5. 실행
			cnt = pstmt.executeUpdate();
		}catch(Exception e){
			System.out.println("행추가일때: "+e);
		}
		//6. 행갯수 리턴
		return cnt;
	}
	
	//2) 성적데이터들의 목록
	public ArrayList<SungjukDTO> list(){ 
		//자료형확인 잘하기!
		//DB에서 가져온 데이터(이름,성적,평균 등)를 list에 모아서 SungjukDTO자료형으로 ArrayList에 담는다.
		ArrayList<SungjukDTO> list = null; 
		//테이블을 온전히 담을 수 있는 자료형을 만들어야한다.
		//자료구조 잘 이해하기		
				
		try{
			//1. DB연결: DBOpen.java와 연결한다.
			Connection con=DBOpen.getConnetion();
			StringBuilder sql = new StringBuilder();
			
			//2. Select SQL문 작성
			sql.append(" SELECT sno, uname, kor, eng, mat, aver, addr, wdate");
			sql.append(" FROM sungjuk ");
			sql.append(" ORDER BY wdate DESC ");
			
			//3. SQL문 변환
			PreparedStatement pstmt = con.prepareStatement(sql.toString());
			
			//4. 결과를 rs에 저장, ResultSet은 결과를 저장하는 하나의 집합
			ResultSet rs = pstmt.executeQuery();
			
			//5. rs의 내용을 next로 읽기
			if(rs.next()){
				
				//6. list에 ArrayList<SungjukDTO>로 차곡차곡 저장
				list = new ArrayList<SungjukDTO>(); //전체 저장하기				
				do {
					SungjukDTO dto = new SungjukDTO(); //한 줄씩 저장하기
					dto.setSno(rs.getInt("sno"));
					dto.setUname(rs.getString("uname"));
					dto.setKor(rs.getInt("kor"));
					dto.setEng(rs.getInt("eng"));
					dto.setMat(rs.getInt("mat"));
					dto.setAver(rs.getInt("aver"));					
					dto.setAddr(rs.getString("addr"));
					dto.setWdate(rs.getString("wdate"));
					list.add(dto);
				} while (rs.next()); 				
			} else{
				list = null; 				
			}// if end
			
		}catch(Exception e){
			System.out.println("목록 불러오기 실패!" + e );
		}
		return list;		
	}//list() end
	
	//3) 성적데이터의 조회
	public SungjukDTO read(int sno){ //매개변수명은 테이블 컬럼명과 일치시키는게 편하다.
			SungjukDTO dto = null;
			
		try {
			//1. DB연결: DBOpen.java와 연결한다.
			Connection con=DBOpen.getConnetion();
			StringBuilder sql = new StringBuilder();
			
			//2. Select SQL문 작성
			sql.append(" SELECT sno,uname,kor,eng,mat,aver,addr,wdate ");
			sql.append(" FROM sungjuk ");
			sql.append(" WHERE sno=? ");
			
			//3. SQL문 변환
			PreparedStatement pstmt = con.prepareStatement(sql.toString());
			pstmt.setInt(1, sno); // ?순서와 ?에 들어갈 자료형 주의
			
			//4. 결과를 rs에 저장
			ResultSet rs = pstmt.executeQuery();
			if(rs.next()){
				do {
					dto = new SungjukDTO(); //한 줄씩 저장하기
					dto.setSno(rs.getInt("sno"));
					dto.setUname(rs.getString("uname"));
					dto.setKor(rs.getInt("kor"));
					dto.setEng(rs.getInt("eng"));
					dto.setMat(rs.getInt("mat"));
					dto.setAver(rs.getInt("aver"));					
					dto.setAddr(rs.getString("addr"));					
					dto.setWdate(rs.getString("wdate"));				
				} while (rs.next()); 
				
			} else{
				dto = null;	
			}// if end		
		} catch(Exception e) {
			System.out.println("상세보기실패:" +e);
		}
		return dto;
	}
	
	//4) 성적데이터의 삭제
	public int delete(int sno){ //하나의 데이터를 삭제하기 위해 sno를 매개변수로 받아온다. 
		int cnt = 0;
	try {
		//1. DB연결: DBOpen.java와 연결한다.
		Connection con=DBOpen.getConnetion();
		StringBuilder sql = new StringBuilder();
		
		//2. Delete SQL문 작성
		sql.append(" DELETE FROM sungjuk ");
		sql.append(" WHERE sno=? ");
		
		//3. SQL문 변환
		PreparedStatement pstmt = con.prepareStatement(sql.toString());
		pstmt.setInt(1, sno); // ?순서와 ?에 들어갈 자료형 주의	
		
		//4. 실행된 행갯수 저장
		cnt = pstmt.executeUpdate();		
	} catch(Exception e) {
		System.out.println("성적삭제실패!" +e);
	}
	return cnt;
}
	
	//5) 성적데이터의 수정
	public int update(SungjukDTO dto){
		int cnt = 0;
		try{			
			//1. DB연결: DBOpen.java와 연결한다.
			Connection con=DBOpen.getConnetion();
			StringBuilder sql = new StringBuilder();
			
			//2. Update SQL문 작성
			sql.append(" UPDATE SUNGJUK ");
			sql.append(" SET UNAME=?, KOR=?, ENG=?, MAT=?, AVER=?, ADDR=? ");
			sql.append(" WHERE SNO =? ");
			
			//3. SQL문 변환
			PreparedStatement pstmt = con.prepareStatement(sql.toString());
			
			//4. dto로 데이터 받아오기
			pstmt.setString(1, dto.getUname());
			pstmt.setInt(2, dto.getKor());
			pstmt.setInt(3, dto.getEng());
			pstmt.setInt(4, dto.getMat());
			pstmt.setInt(5, dto.getAver());
			pstmt.setString(6, dto.getAddr());
			pstmt.setInt(7, dto.getSno());
			
			//5. 실행횟수를 cnt에 담기
			cnt = pstmt.executeUpdate();				
			
		} catch(Exception e){
			System.out.println("문제있음: "+e);
		}
		return cnt;
	}
}


 

 

 

2) SungjukDTO.java

성적프로그램에 들어가는 필드들을 모아둔 java파일

package net.sungjuk;
import java.sql.Connection;
import java.sql.PreparedStatement;
import net.utility.DBOpen;

public class SungjukDTO {
	//DAO Data Transfer Object라는 뜻이다. 데이터 전송 객체이다.
	//Value Object
	//SungjukVO, SungjukDataBean
	//1) 테이블의 칼럼과 1:1 매칭되는 필드를 Private 속성으로 접근제어 선언하고 
	//2) getter, setter함수를 작성한다.
	//3) Source -> Generate Getters and Setters로 자동추가 alt+shift+s+r
	
	//1) sungjuk 테이블의 칼럼을 기준으로 field를 선언한다.
	private int sno; //Primary key인 sno
	//함수를 이용해 private 접근.
	private String uname;
	private int kor;
	private int eng;
	private int mat;
	private int aver;
	private String addr;
	private String wdate;
	
	public SungjukDTO(){} //생성자함수
	
	
	//2) 각 field에 접근할 수 있는 getter, setter 함수

	public int getSno() {
		return sno;
	}

	public void setSno(int sno) {
		this.sno = sno;
	}

	public String getUname() {
		return uname;
	}

	public void setUname(String uname) {
		this.uname = uname;
	}

	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 getAver() {
		return aver;
	}

	public void setAver(int aver) {
		this.aver = aver;
	}

	public String getAddr() {
		return addr;
	}

	public void setAddr(String addr) {
		this.addr = addr;
	}

	public String getWdate() {
		return wdate;
	}

	public void setWdate(String wdate) {
		this.wdate = wdate;
	}

	//개발자들이 에러 확인용으로 주로 사용
	//Source -> Generate toString()...
	@Override
	public String toString() {		
		return "SungjukDTO [sno="+ sno +", uname="+ uname +" ,kor=" + kor +
				",eng="+ eng +", mat"+ mat +", addr="+ addr +", wdate="+ wdate +"]";
	}
	
}

 

 

 

2. 뷰페이지

성적프로그램의 CRUD 페이지들이다. 

sungjukForm.jsp 성적을 입력할 수 있는 폼양식이 있는 페이지
sungjukIns2.jsp 성적데이터를 insert하는 jsp파일, dto객체를 이용해 전달값을 dto 객체에 담는 역할
sungjukList.jsp 성적데이터들의 목록을 보여주는 페이지
sungjukRead.jsp 성적데이터들을 불러와 한개의 성적데이터의 상세내역을 보여주는 페이지
sungjukDelete.jsp 성적데이터들을 불러와 한개의 성적데이터를 삭제하는 페이지
sungjukUpdate.jsp 성적데이터들을 불러와 한개의 성적데이터를 수정하기 위한 폼 페이지 
sungjukUpdateProc.jsp 성적데이터들을 불러와 한개의 성적데이터를 수정하는 기능이 있는 페이지

 

1) sungjukForm.jsp

성적을 입력할 수 있는 폼양식이다.

<%@ page contentType="text/html; charset=UTF-8"%>
<!DOCTYPE html">
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../css/style.css">

<title>성적 Bean 프로그램</title>
</head>

<body>
	<h1>성적 입력 폼</h1>
	<div class = "btn" style="margin:20px;">
		<input type="button" value="성적목록" onClick="location.href='sungjukList.jsp'">
		<input type="button" value="성적작성" onClick="location.href='sungjukForm.jsp'">
	</div>	
	<form method="post" action="sungjukIns2.jsp">
	<table>
	<tr>
		<th>번호</th>
		<td>
		  <input type="hidden" name="sno">
		</td>
	</tr>
	<tr>
		<th>이름</th>
		<td>
		  <input type="text" name="uname" maxlength="20" required autofocus>
		</td>
	</tr>
	
	<tr>
		<th>국어</th>
		<td>
		  <input type="number" name="kor" size="5" min="0" max="100" placeholder="점수를 입력하세요">
		</td>
	</tr>
	
	<tr>
		<th>영어</th>
		<td>
		  <input type="number" name="eng" size="5" min="0" max="100" placeholder="점수를 입력하세요">
		</td>
	</tr>
	
	
	<tr>
		<th>수학</th>
		<td>
		  <input type="number" name="mat" size="5" min="0" max="100" placeholder="점수를 입력하세요">
		</td>
	</tr>
	
	<tr>
		<th>주소</th>
		<td>
		  <select name="addr">
		  	<option value="Seoul">서울</option>
		  	<option value="Jeju">제주</option>
		  	<option value="Busan">부산</option>
		  	<option value="Suwon">수원</option>
		  </select>
		</td>
	</tr>
	
	<tr>
		<td colspan="2" align="center" class="bottom">
		<input type="submit" value="전송" class="submit">
		<input type="reset" value="취소" class="reset">
	</tr>
	
	</table>
	
	</form>
</body>
</html>

 

 

2) sungjukIns2.jsp

성적데이터를 insert하기 위한 페이지

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="net.sungjuk.*" %>
<%@ include file="common.jsp" %>

<!DOCTYPE html">
<html>
<head>
<meta charset="UTF-8">
<title>성적 Bean Insert</title>
</head>
<body>
<h1>성적 결과</h1>
<div class = "btn" style="margin:20px;">
		<input type="button" value="성적목록" onClick="location.href='sungjukList.jsp'">
		<input type="button" value="성적작성" onClick="location.href='sungjukForm.jsp'">
</div>
<%
	request.setCharacterEncoding("UTF-8");

	String uname = request.getParameter("uname").trim();
	int kor = Integer.parseInt(request.getParameter("kor"));
	int eng = Integer.parseInt(request.getParameter("eng"));
	int mat = Integer.parseInt(request.getParameter("mat"));
	String addr = request.getParameter("addr").trim();
					
	//평균구하기
	int aver=(kor+eng+mat)/3;
	
	//1) dto 객체를 사용하기 전
	//int cnt = dao.insert(uname, kor, eng, mat, aver, addr); //java class로 만든 메소드 가져오기.
	
	
	//2) dto 객체를 사용한 경우
	//-> 전달값을 모두 dto객체에 담기
	dto.setUname(uname);
	dto.setKor(kor);
	dto.setEng(eng);
	dto.setMat(mat);
	dto.setAver(aver);
	dto.setAddr(addr);	
	
	int cnt = dao.insert(dto);
	
	if(cnt == 0){
		out.println("<p>성적입력이 실패했습니다.</p>");
		out.println("<p><a href='javascript:history.back()'>다시시도</a></p>");
	}else {
		out.println("<script>");
		out.println("alert('성적이 입력되었습니다.');");
		out.println("location.href='sungjukList.jsp';");
		out.println("</script>");
	}
	
	
	
%>

</body>
</html>

 

 

3) sungjukList.jsp

성적데이터들의 목록이 보여지는 페이지

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="net.sungjuk.*" %>
<%@ include file="common.jsp" %>

<!DOCTYPE html">
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../css/style.css">
<style>
a{color: inherit; text-decoration:none;}
tr{cursor:pointer; opacity:.8;}
tr:hover {opacity: 1; }
.modify:hover {color: #0050ff;}
.delete:hover {color: red;}
tr:nth-child(even){background: #eee;}
</style>
<title>성적 목록</title>
</head>
<body>
	<h1>성적목록</h1>
	<div class = "wrap">
	<div class = "btn" style="margin:20px;">
		<input type="button" value="성적목록" onClick="location.href='sungjukList.jsp'">
		<input type="button" value="성적작성" onClick="location.href='sungjukForm.jsp'">
	</div>	
	<table border="1">
		<tr>
			<th>번호</th>
			<th>이름</th>
			<th>국어</th>
			<th>영어</th>
			<th>수학</th>
			<th>등록일</th>		
		</tr>	
	<%
	ArrayList<SungjukDTO> list = dao.list();
	if(list == null){
		out.println("<tr>");
		out.println("<td colspan='5'>글없음!</td>");
		out.println("</tr>");
	}else{
		 for(int i=0; i<list.size(); i++){
			dto = list.get(i);
	%>
	<tr>	
		<td><%=dto.getSno()%></td>
		<td><a href="sungjukRead.jsp?sno=<%=dto.getSno()%>"><%=dto.getUname()%></a></td>
		<td><%=dto.getKor()%></td>
		<td><%=dto.getEng()%></td>
		<td><%=dto.getMat()%></td>
		<td><%=dto.getWdate()%></td>		
	</tr>
	<%
		 }//for end
	}//if end
	
	%>
	</table>
	</div>
</body>
</html>

 

 

4) sungjukRead.jsp

한 개의 데이터의 상세내역을 보여주는 페이지

페이지 url은 기본키가 될 수 있는 sno(번호)로 생성이 된다.

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="net.sungjuk.*" %>
<%@ include file="common.jsp" %>

<!DOCTYPE html">
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../css/style.css">
<title>sungjukRead.jsp</title>
</head>
<body>
	<h1>성적 상세보기</h1>
	<div class = "btn" style="margin:20px;">
		<input type="button" value="성적목록" onClick="location.href='sungjukList.jsp'">
		<input type="button" value="성적작성" onClick="location.href='sungjukForm.jsp'">
	</div>
	
	<%
	int sno = Integer.parseInt(request.getParameter("sno"));
	dto = dao.read(sno);   //read 함수 불러오기. 기본키인 sno(번호)로 불러오기.
	if(dto==null){
		out.println("해당 성적이 없습니다.");
	}else{
	
	%>	
		<table>
			<tr>
			  <th>번호</th>
			  <td><%=dto.getSno()%></td>	
			</tr>
			
			<tr>
			  <th>이름</th>
			  <td><%=dto.getUname()%></td>	
			</tr>
			
			<tr>
			  <th>국어</th>
			  <td><%=dto.getKor()%></td>	
			</tr>
			
			<tr>
			  <th>영어</th>
			  <td><%=dto.getEng()%></td>	
			</tr>
			
			<tr>
			  <th>수학</th>
			  <td><%=dto.getMat()%></td>	
			</tr>
			
			<tr>
			  <th>평균</th>
			  <td><%=dto.getAver()%></td>	
			</tr>
			
			<tr>
			  <th>주소</th>
			  <td><%=dto.getAddr()%>
			  <%
			  //주소를 한글로 출력하기
			  switch (dto.getAddr()){
			  case "Seoul": out.print(", 서울시"); break;
			  case "Busan": out.print(", 부산시"); break;
			  case "Jeju": out.print(", 제주시"); break;
			  case "Suwon": out.print(", 수원시"); break;			  
			  }			  
			  %>
			  </td>
			  	
			</tr>
			<tr>
			<th>수정/삭제</th>
			<td>
				<a href="sungjukUpdate.jsp?sno=<%=dto.getSno()%>" class="modify">[수정]</a>
				<a href="sungjukDelete.jsp?sno=<%=dto.getSno()%>" class="delete">[삭제]</a>
			</td>
			</tr>
			</table>	
	
	<%
		
	}	
	%>
</body>
</html>

 

 

5) sungjukDelete.jsp

한 개의 데이터를 삭제하는 페이지

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="net.sungjuk.*" %>
<%@ include file="common.jsp" %>

<!DOCTYPE html">
<html>
<head>
<meta charset="UTF-8">
<title>성적 Bean Delete</title>
</head>
<body>
<h1>성적삭제</h1>
<div class = "btn" style="margin:20px;">
		<input type="button" value="성적목록" onClick="location.href='sungjukList.jsp'">
		<input type="button" value="성적작성" onClick="location.href='sungjukForm.jsp'">
	</div>
	
<%	
	int sno = Integer.parseInt(request.getParameter("sno"));
	int cnt = dao.delete(sno);
	
	if(cnt == 0){
		out.println("<p>성적입력이 실패했습니다.</p>");
		out.println("<p><a href='javascript:history.back()'>다시시도</a></p>");
	}else {
		out.println("<script>");
		out.println("alert('성적이 삭제되었습니다.');");
		out.println("location.href='sungjukList.jsp';");
		out.println("</script>");
	}
%>

</body>
</html>

 

6) sungjukUpdate.jsp

한 개의 성적데이터를 수정하기 위한 폼페이지 -> 폼에 이 전에 기입했었던 value값이 불러와진 상태이다.

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="net.sungjuk.*" %>
<%@ include file="common.jsp" %>

<!DOCTYPE html">
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../css/style.css">
<title>sungjukRead.jsp</title>
</head>
<body>
	<h1>성적 상세보기</h1>
	<div class = "btn" style="margin:20px;">
		<input type="button" value="성적목록" onClick="location.href='sungjukList.jsp'">
		<input type="button" value="성적작성" onClick="location.href='sungjukForm.jsp'">
	</div>
	
	<%
	int sno = Integer.parseInt(request.getParameter("sno"));
	dto = dao.read(sno);
	if(dto==null){
		out.println("해당 성적이 없습니다.");
	} else {	
			%>
				<form method="post" action="sungjukUpdateProc.jsp">
				<table>
				<tr>
					<th>번호</th>
					<td>
					  <input type="hidden" name="sno" value=<%=dto.getSno()%>>					  
					</td>
				</tr>
				<tr>
					<th>이름</th>
					<td>
					  <input type="text" name="uname" maxlength="20" value=<%=dto.getUname()%> required autofocus>
					</td>
				</tr>
				
				<tr>
					<th>국어</th>
					<td>
					  <input type="number" name="kor" size="5" value=<%=dto.getKor()%> min="0" max="100" placeholder="점수를 입력하세요">
					</td>
				</tr>
				
				<tr>
					<th>영어</th>
					<td>
					  <input type="number" name="eng" size="5" value=<%=dto.getEng()%> min="0" max="100" placeholder="점수를 입력하세요">
					</td>
				</tr>
				
				
				<tr>
					<th>수학</th>
					<td>
					  <input type="number" name="mat" size="5" value=<%=dto.getMat()%> min="0" max="100" placeholder="점수를 입력하세요">
					</td>
				</tr>
				
				<tr>
					<th>주소</th>
					<td>
					
					<% String addr = dto.getAddr();	%>
					
					  <select name="addr">
					  	<option value="Seoul" <%if(addr.equals("Seoul")){out.print("selected");} %>>서울</option>
					  	<option value="Jeju" <%if(addr.equals("Jeju")){out.print("selected");} %>>제주</option>
					  	<option value="Busan" <%if(addr.equals("Busan")){out.print("selected");} %>>부산</option>
					  	<option value="Suwon" <%if(addr.equals("Suwon")){out.print("selected");} %>>수원</option>
					  </select>
					</td>
				</tr>
				
				<tr>
					<td colspan="2" align="center" class="bottom">
					<input type="submit" value="수정" class="submit">
					<input type="reset" value="취소" class="reset">
				</tr>
				
				</table>
				
				</form>	
				<%
				}
				%>
						
		
</body>
</html>

 

 

7) sungjukUpdateProc.jsp

성적을 수정하기 위한 기능을 불러오는 페이지

<%@ page contentType="text/html; charset=UTF-8"%>
<%@ page import="net.sungjuk.*" %>
<%@ include file="common.jsp" %>

<!DOCTYPE html">
<html>
<head>
<meta charset="UTF-8">
<link rel="stylesheet" type="text/css" href="../css/style.css">
<title>Insert title here</title>
</head>
<body>
<h1>성적 입력 폼</h1>	
<div class = "btn" style="margin:20px;">
		<input type="button" value="성적목록" onClick="location.href='sungjukList.jsp'">
		<input type="button" value="성적작성" onClick="location.href='sungjukForm.jsp'">
	</div>
	<%
		
	int sno = Integer.parseInt(request.getParameter("sno"));
	String uname = request.getParameter("uname").trim();
	int kor = Integer.parseInt(request.getParameter("kor"));
	int eng = Integer.parseInt(request.getParameter("eng"));
	int mat = Integer.parseInt(request.getParameter("mat"));
	String addr = request.getParameter("addr").trim();
					
	//1) 평균구하기
	int aver=(kor+eng+mat)/3;
	
	//2) 전달값을 모두 dto객체에 담기
	dto.setUname(uname);
	dto.setKor(kor);
	dto.setEng(eng);
	dto.setMat(mat);
	dto.setAver(aver);
	dto.setAddr(addr);
	dto.setSno(sno);

	//3) 함수 실행
	int cnt = dao.update(dto);
	if(cnt == 0){
		out.println("<p>성적수정이 실패했습니다.</p>");
		out.println("<p><a href='javascript:history.back()'>다시시도</a></p>");
	}else {
		out.println("<script>");
		out.println("alert('성적수정이 성공하였습니다.');");
		out.println("location.href='sungjukList.jsp';");
		out.println("</script>");
	}	
%>

</body>
</html>

댓글