728x90

목차

  1. DB정보 복사
  2. DB 정보 수정
  3. update.jsp_vo
  4. DAO_update

 



1. DB정보 복사

* 수정버튼을 누르면 update함수가 <%=vo.getIdx()%> 부터 <%=vo.getGrade() %>를 순서대로 idx, name, java, c, grade 매개변수로 받아 id가 update_***인 input태그의 value 값으로 설정해 최종적으로  '정보수정 테이블'로 복사됨
*idx는 type="hidden"으로 선언해 보이진 않지만 form태그로 전송할 때 같이 전송된다.
.


2. DB 정보 수정

* 값을 수정하고 [수정]버튼을 누르면 수정된 값이 update.jsp로 전달됨

<%@page import="vo.VO"%>
<%@page import="java.util.List"%>
<%@page import="dao.DAO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	DAO dao = DAO.getInstance();
	List<VO> list = dao.selectList();
%>      

<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Insert title here</title>
		<script>
			function send(f){
				//name 값을 가져옴
				var name = f.name.value;
				var java = f.java.value;
				var c = f.c.value;
				var grade = f.grade.value;
				
				//유효성 체크			
				if (name=="") {
					alert("학생이름을 확인해주세요");
					return;
				}
				if(java=="" ||java < 0 || java > 100){
					alert("0~100점까지를 입력해주세요");
					return;
				}
				if(c==""||c < 0 || c > 100){
					alert("0~100점까지를 입력해주세요");
					return;
				}
				if(grade=="" ||grade < 0 || grade > 4.5){
					alert("GPA는 0~4.5점까지를 입력해주세요");
					return;
				}				
				/*유효성체크에서도 문제가 없다면 var로 선언된 값들을 
				grade_register.jsp로 보낸다.*/
				f.action = "Grade_register.jsp";
				f.method = "post";
				f.submit();
			}			
			
			function del( idx ) {
				if(!confirm("정말로 삭제하시겠습니까?")){
					return;
				}						
				location.href="Grade_del.jsp?idx="+idx;
			}
			
			function update( idx, name, java, c, grade){				
				document.getElementById("update_idx").value = idx;
				document.getElementById("update_name").value = name;
				document.getElementById("update_java").value = java;
				document.getElementById("update_c").value = c;
				document.getElementById("update_grade").value = grade;				
			}	
			
			
			function updateSend( f ) {				
				f.action = "Grade_update.jsp";
				f.submit();
			}
			
			
		</script>
	</head>	
	<body>
		<table border='1' style='border-collapse: collapse;' align="center">
			<tr>
				<th> 이름 </th>
				<th> 자바 </th>
				<th> C계열 </th>
			    <th> GPA </th>			
				<th colspan='2'> 기능 </th>
				
						
			</tr>
			<%
				for(int i=0; i<list.size(); i++){
					VO vo = list.get(i);
			%>
			<tr style="text-align: center;">
				<td><%= vo.getName() %> </td>
				<td><%= vo.getJava() %> </td>
				<td><%= vo.getC() %> </td>
				<td><%= vo.getGrade() %> </td>		
				<td>
					<input type="button" value="삭제" onclick="del(
					'<%=vo.getIdx()%>');">				
					<input type="button" value="수정" onclick="update(
					'<%=vo.getIdx() %>','<%=vo.getName() %>',
					'<%=vo.getJava() %>','<%=vo.getC() %>',
					'<%=vo.getGrade() %>' );">
				<td>				
			</tr>					
			<%}%>		
		</table>		
		
		<div>
			<form>
				<input type="hidden" name="idx" id="update_idx">
				
				<h3 style="text-align: center;"> 학생 정보 수정 </h3><br>
				<table border="1" align="center"
				 style="border-collapse: collapse;">
					<tr>
						<th>이름</th>
						<td><input name="name2" id="update_name"></td>
					</tr>
					<tr>
						<th>JAVA </th>
						<td><input name="java2" id="update_java"></td>
					</tr>
					<tr>
						<th>C계열 </th>
						<td><input name="c2" id="update_c"></td>
					</tr>
					<tr>
						<th>GPA </th>
						<td><input name="grade2" id="update_grade"></td>
					</tr>
						
					<tr>
						<td colspan="2" align="center">
							<input type="button" value="수정"
							 onclick="updateSend(this.form);">
						</td>
					</tr>										 
				</table>
			</form>					
		</div>						
		
		<!--학생입력  -->
		<div id="input">
			<form>
				<h3 style="text-align: center;"> 학생 정보 추가 </h3><br>
				<table border="1" align="center"
				 style="border-collapse: collapse;">
					<tr>
						<th>이름 </th>
						<td><input name="name"></td>
					</tr>
					<tr>
						<th>JAVA </th>
						<td><input name="java"></td>
					</tr>
					<tr>
						<th>C계열 </th>
						<td><input name="c"></td>
					</tr>
					<tr>
						<th>GPA </th>
						<td><input name="grade"></td>
					</tr>
						
					<tr>
						<td colspan="2" align="center">
							<input type="button" value="등록" onclick=
								"send(this.form);">
						</td>
					</tr>										 
				</table>
			</form>					
		</div>			
	</body>
</html>

3. update.jsp_vo

* update.jsp로 전달된 파라미터의 name을 파라미터로 받아 변수를 선언해주고 그 변수를 vo에 정리해 넣어준다. 정리된 vo를 DAO에 있는 update에 매개변수로 전달해주고 페이지를 Grade.jsp로 이동시킨다.

<%@page import="dao.DAO"%>
<%@page import="vo.VO"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
    pageEncoding="UTF-8"%>
<%
	request.setCharacterEncoding("utf-8");

	int idx = Integer.parseInt(request.getParameter("idx"));
	String name = request.getParameter("name2");
	int java = Integer.parseInt(request.getParameter("java2"));
	int c = Integer.parseInt(request.getParameter("c2"));
	int grade = Integer.parseInt(request.getParameter("grade2")) ;
	
	VO vo = new VO();
	vo.setIdx(idx);
	vo.setName(name);
	vo.setJava(java);
	vo.setC(c);
	vo.setGrade(grade);
	
	DAO.getInstance().update(vo);
	response.sendRedirect("Grade.jsp");
%>
    
<!DOCTYPE html>
<html>
	<head>
		<meta charset="UTF-8">
		<title>Insert title here</title>
		
	</head>
	
	<body>
	
	</body>
</html>

4. DAO_update

package dao;

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

import service.DBService;
import vo.VO;

public class DAO {	
		//DAO(Data Access Object) : 데이터 접근을 목표로 하는 클래스
		//single-ton pattern: 해당 클래스의 인스턴스가 1개만 생성됨	
		static DAO single = null;
		public static DAO getInstance() {
			//생성되지 않았으면 생성
			if (single == null)
				single = new DAO();
			//생성된 객체정보를 반환
			return single;
		}
		
		//grade테이블 조회
		public List<VO> selectList() {

			List<VO> list = new ArrayList<VO>();
			Connection conn = null;
			PreparedStatement pstmt = null;
			ResultSet rs = null;
			String sql = "SELECT * From grade";

			try {
				//1.Connection얻어온다
				conn = DBService.getInstance().getConnection();
				//2.명령처리객체정보를 얻어오기
				pstmt = conn.prepareStatement(sql);

				//3.결과행 처리객체 얻어오기
				rs = pstmt.executeQuery();

				while (rs.next()) {
					VO vo = new VO();
					//현재레코드값=>Vo저장
					vo.setIdx(rs.getInt("idx"));
					vo.setName(rs.getString("name"));
					vo.setJava(rs.getInt("java"));
					vo.setC(rs.getInt("c"));
					vo.setGrade(rs.getInt("grade"));
					
					list.add(vo);
				}
			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			} finally {
				try {
					if (rs != null)
						rs.close();
					if (pstmt != null)
						pstmt.close();
					if (conn != null)
						conn.close();
				} catch (SQLException e) {
					e.printStackTrace();
				}
			}
			return list;
		}	
		
		public int insert(VO vo) {
			int res = 0;

			Connection conn = null;
			PreparedStatement pstmt = null;

			String sql =
			"INSERT INTO grade VALUES(student_seq.nextval, ?,?,?,?)";

			try {
				//1.Connection획득
				conn = DBService.getInstance().getConnection();
				//2.명령처리객체 획득
				pstmt = conn.prepareStatement(sql);

				//3.pstmt parameter 채우기
				pstmt.setString(1, vo.getName());
				pstmt.setInt(2, vo.getJava());
				pstmt.setInt(3, vo.getC());
				pstmt.setInt(4, vo.getGrade());				

				//4.DB로 전송(res:처리된행수)
				res = pstmt.executeUpdate();

			} catch (Exception e) {			
				e.printStackTrace();
			} finally {

				try {
					if (pstmt != null)
						pstmt.close();
					if (conn != null)
						conn.close();
				} catch (SQLException e) {					
					e.printStackTrace();
				}
			}
			return res;
		}
		
		public int delete(int idx) {
			// TODO Auto-generated method stub
			int res = 0;

			Connection conn = null;
			PreparedStatement pstmt = null;

			String sql = "DELETE FROM grade WHERE idx=?";

			try {
				//1.Connection획득
				conn = DBService.getInstance().getConnection();
				//2.명령처리객체 획득
				pstmt = conn.prepareStatement(sql);
				
				//3.pstmt parameter 채우기
				pstmt.setInt(1, idx);

				//4.DB로 전송(res:처리된행수)
				res = pstmt.executeUpdate();

			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			} finally {

				try {
					if (pstmt != null)
						pstmt.close();
					if (conn != null)
						conn.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			return res;
		}
		public int update(VO vo) {
			// TODO Auto-generated method stub
			int res = 0;

			Connection conn = null;
			PreparedStatement pstmt = null;

			String sql =
			"UPDATE grade SET name=?, java=?, c=?, grade=? where idx=?";

			try {
				//1.Connection획득
				conn = DBService.getInstance().getConnection();
				//2.명령처리객체 획득
				pstmt = conn.prepareStatement(sql);

				//3.pstmt parameter 채우기
				pstmt.setString(1, vo.getName());
				pstmt.setInt(2, vo.getJava());
				pstmt.setInt(3, vo.getC());
				pstmt.setInt(4, vo.getGrade());
				pstmt.setInt(5, vo.getIdx());

				//4.DB로 전송(res:처리된행수)
				res = pstmt.executeUpdate();

			} catch (Exception e) {
				// TODO: handle exception
				e.printStackTrace();
			} finally {

				try {
					if (pstmt != null)
						pstmt.close();
					if (conn != null)
						conn.close();
				} catch (SQLException e) {
					// TODO Auto-generated catch block
					e.printStackTrace();
				}
			}
			return res;
		}
}

 

728x90

+ Recent posts