728x90
목차
- DB정보 복사
- DB 정보 수정
- update.jsp_vo
- 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
'# WEB > Java&JSP' 카테고리의 다른 글
[JSP] JSTL_if, forEach 등 함수 쉽게 쓰기 (0) | 2020.11.28 |
---|---|
[JSP] EL표현식_JSP가독성 높히기 (0) | 2020.11.26 |
[JSP] Delete_WEB에서 DB자원 삭제하기 (0) | 2020.11.23 |
[JSP] Create_WEB에서 DB자원 삽입하기 (0) | 2020.11.21 |
[JSP] JNDI_JSP와 OracleDB 연동 (0) | 2020.11.20 |