DB를 연결하는 방식에는 JDBC 방식과 JPA 방식이 있다.
JDBC는 자바랑 DB를 별도로 관리하고, JPA는 자바 안에서 DB도 관리하는 것이다. 우리는 JDBC 방식으로 할 것이다.
이제 DB를 연동해서 성적 페이지를 만들어볼 것이다.
sql폴더와 sungjuk폴더를 생성해서 파일을 관리하겠다.
게시판 페이지의 흐름은 보통 입력 -> 목록 -> 상세보기 -> 삭제/수정이다.
따라서 처음으로 입력 작업을 할 것이다.
입력
sungjukForm.jsp을 생성하여 값을 입력하면 sungjukIns.jsp에서 보이게 할 것이다.
(sungjukForm.jsp -> sungjukIns.jsp)
sungjukForm.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sungjukForm.jsp</title>
</head>
<body>
<h3>*성적 입력 폼*</h3>
<p><a href="sungjukList.jsp"></a>[성적목록]</p>
<form name="sungjukfrm" id="sungjukfrm" method="post" action="sungjukIns.jsp">
<table>
<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="Suwon">수원</option>
<option value="Busan">부산</option>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="전송">
<input type="reset" value="취소">
</td>
</tr>
</table>
</form>
</body>
</html>
sungjukIns.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sungjukIns.jsp</title>
</head>
<body>
<h3>*성적 결과 페이지*</h3>
<%
//한글 인코딩
request.setCharacterEncoding("UTF-8");
//사용자가 입력한 정보를 가져와서 변수에 담기
String uname = request.getParameter("uname").trim();
int kor = Integer.parseInt(request.getParameter("kor").trim());
int eng = Integer.parseInt(request.getParameter("eng").trim());
int mat = Integer.parseInt(request.getParameter("mat").trim());
String addr = request.getParameter("addr");
//평균 구하기
int aver=(kor+eng+mat)/3;
out.println("요청IP:" + request.getRemoteAddr());
%>
</body>
</html>
값을 입력하여 전송하였더니 정상적으로 작동하는 것을 확인할 수 있다. 중간에 작동을 확인하면서 진행하면 좋다.
이제 Oracle DB를 연결하고 행을 추가하자
sungjukIns.jsp
<%@page import="java.sql.DriverManager"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sungjukIns.jsp</title>
</head>
<body>
<h3>*성적 결과 페이지*</h3>
<%
//한글 인코딩
request.setCharacterEncoding("UTF-8");
//사용자가 입력한 정보를 가져와서 변수에 담기
String uname = request.getParameter("uname").trim();
int kor = Integer.parseInt(request.getParameter("kor").trim());
int eng = Integer.parseInt(request.getParameter("eng").trim());
int mat = Integer.parseInt(request.getParameter("mat").trim());
String addr = request.getParameter("addr");
//평균 구하기
int aver=(kor+eng+mat)/3;
//out.println("요청IP:" + request.getRemoteAddr());
//Oracle DB 연결 및 행 추가
Connection con = null;
PreparedStatement pstmt = null;
try {
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "system";
String password = "1234";
String driver = "oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
out.println("오라클 DB 서버 연결 성공!!");
} catch (Exception e) {
out.println("오라클DB연결실패:" + e);
} finally { //자원반납(순서주의)
try {
if(pstmt!=null) {pstmt.close();}
} catch (Exception e) {}
try {
if(con!=null) {con.close();}
} catch (Exception e) {}
}//end
%>
</body>
</html>
다음으로 행을 추가해서 그 결과를 알려주고 목록 페이지로 이동하게 만들자
<%@page import="java.sql.DriverManager"%>
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sungjukIns.jsp</title>
</head>
<body>
<h3>*성적 결과 페이지*</h3>
<%
//한글 인코딩
request.setCharacterEncoding("UTF-8");
//사용자가 입력한 정보를 가져와서 변수에 담기
String uname = request.getParameter("uname").trim();
int kor = Integer.parseInt(request.getParameter("kor").trim());
int eng = Integer.parseInt(request.getParameter("eng").trim());
int mat = Integer.parseInt(request.getParameter("mat").trim());
String addr = request.getParameter("addr");
//평균 구하기
int aver=(kor+eng+mat)/3;
//out.println("요청IP:" + request.getRemoteAddr());
//Oracle DB 연결 및 행 추가
Connection con = null;
PreparedStatement pstmt = null;
try {
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "system";
String password = "1234";
String driver = "oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
//out.println("오라클 DB 서버 연결 성공!!");
StringBuilder sql = new StringBuilder();
sql.append(" INSERT INTO sungjuk(sno, uname, kor, eng, mat, aver, addr, wdate) ");
sql.append(" VALUES(sungjuk_seq.nextval, ?, ?, ?, ?, ?, ?, sysdate) ");
pstmt = con.prepareStatement(sql.toString());
pstmt.setString(1, uname);
pstmt.setInt(2, kor);
pstmt.setInt(3, eng);
pstmt.setInt(4, mat);
pstmt.setInt(5, aver);
pstmt.setString(6, addr);
int cnt = pstmt.executeUpdate();
if(cnt==0){
out.print("<p>성적 입력이 실패했습니다!!</p>");
out.print("<p><a href='javascript:history.back()'>[다시시도]</a></p>");
} else {
out.print("<script>");
out.print(" alert('성적이 입력되었습니다~');");
out.print(" location.href='sungjukList.jsp';"); //목록페이지 이동
out.print("</script>");
}//if end
} catch (Exception e) {
out.println("오라클DB연결실패:" + e);
} finally { //자원반납(순서주의)
try {
if(pstmt!=null) {pstmt.close();}
} catch (Exception e) {}
try {
if(con!=null) {con.close();}
} catch (Exception e) {}
}//end
%>
</body>
</html>
확인을 누르고 아래 404 에러 화면이 뜨는 것은 아직 sungjukList.jsp 파일을 만들지 않았기 때문이다.
목록
이제 자료를 입력하고 나면 성적 목록 페이지로 이동하게 만들자
(자료가 입력되면 sungjukIns.jsp -> sungjukList.jsp)
sungjukList.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sungjukList.jsp</title>
</head>
<body>
<h3>*성적 목록*</h3>
<p><a href="sungjukForm.jsp">[성적쓰기]</a></p>
<table>
<tr>
<th>이름</th>
<th>국어</th>
<th>영어</th>
<th>수학</th>
<th>등록일</th>
</tr>
<%
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "system";
String password = "1234";
String driver = "oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
//out.println("오라클 DB 서버 연결 성공!!");
StringBuilder sql = new StringBuilder();
sql.append(" SELECT sno, uname, kor, eng, mat, wdate ");
sql.append(" FROM sungjuk ");
sql.append(" ORDER BY sno DESC ");
pstmt = con.prepareStatement(sql.toString());
rs = pstmt.executeQuery();
if(rs.next()){
do {
%>
<tr>
<td><%=rs.getString("uname")%></td>
<td><%=rs.getInt("kor")%></td>
<td><%=rs.getInt("eng")%></td>
<td><%=rs.getInt("mat")%></td>
<td><%=rs.getString("wdate").substring(0, 10)%></td>
</tr>
<%
} while(rs.next());
} else {
out.println("<tr>");
out.println(" <td colspan='5'>글없음!!</td>");
out.println("</tr>");
}//if end
} catch (Exception e) {
out.println("오라클DB연결실패:" + e);
} finally { //자원반납(순서주의)
try {
if(rs!=null) {rs.close();}
} catch (Exception e) {}
try {
if(pstmt!=null) {pstmt.close();}
} catch (Exception e) {}
try {
if(con!=null) {con.close();}
} catch (Exception e) {}
}//end
%>
</table>
</body>
</html>
HTML 태그를 do 안에서 편하게 사용하기 위해 <% %>를 끊고 body를 활성화시켰다. 이런 식으로 <% %>를 끊었다가 다시 활성화했다가 하면 스파게티 코드가 되어 복잡하게 만든다. 이는 frontend와 backend를 나눠서 코딩하지 않았기 때문이다.
상세보기
이름을 클릭하면 상세보기 페이지로 이동되도록 해보자
sungjukList.jsp
if(rs.next()){
do {
%>
<tr>
<td><a href="sungjukRead.jsp?sno=<%=rs.getInt("sno")%>"><%=rs.getString("uname")%></a></td>
<td><%=rs.getInt("kor")%></td>
<td><%=rs.getInt("eng")%></td>
<td><%=rs.getInt("mat")%></td>
<td><%=rs.getString("wdate").substring(0, 10)%></td>
</tr>
<%
} while(rs.next());
이름을 클릭하면 상세보기 페이지인 sungjukRead.jsp로 이동하도록 만들 것이다.
<tr>에 첫 번째 <td>를 수정하였다.
이제 sungjukRead.jsp를 만들자
sungjukRead.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sungjukRead.jsp</title>
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<h3>*성적 상세보기*</h3>
<p>
<a href="sungjukForm.jsp">[성적쓰기]</a>
<a href="sungjukList.jsp">[성적목록]</a>
</p>
<%
//예) sungjukRead.jsp?sno=3
int sno = Integer.parseInt(request.getParameter("sno"));
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "system";
String password = "1234";
String driver = "oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
//out.println("오라클 DB 서버 연결 성공!!");
StringBuilder sql = new StringBuilder();
sql.append(" SELECT sno, uname, kor, eng, mat, aver, addr, wdate ");
sql.append(" FROM sungjuk ");
sql.append(" WHERE sno=? ");
pstmt = con.prepareStatement(sql.toString());
pstmt.setInt(1, sno);
rs = pstmt.executeQuery();
if(rs.next()){
%>
<div class="container">
<table class="table">
<tr>
<th class="info">이름</th>
<td><%=rs.getString("uname")%></td>
</tr>
<tr>
<th class="info">국어</th>
<td><%=rs.getInt("kor")%></td>
</tr>
<tr>
<th class="info">영어</th>
<td><%=rs.getInt("eng")%></td>
</tr>
<tr>
<th class="info">수학</th>
<td><%=rs.getInt("mat")%></td>
</tr>
<tr>
<th class="info">평균</th>
<td><%=rs.getInt("aver")%></td>
</tr>
<tr>
<th class="info">주소</th>
<td><%=rs.getString("addr")%>
<%
//주소를 한글로 출력
String addr = rs.getString("addr");
if(addr.equals("Seoul")){
out.print("서울");
} else if(addr.equals("Jeju")){
out.print("제주");
} else if(addr.equals("Suwon")){
out.print("수원");
} else if(addr.equals("Busan")){
out.print("부산");
}//if end
/*
switch(rs.getString("addr")) {
case "Seoul" : out.print("서울"); break;
case "Jeju" : out.print("제주"); break;
case "Busan" : out.print("부산"); break;
case "Suwon" : out.print("수원"); break;
}
*/
%>
</td>
</tr>
<tr>
<th class="info">작성일</th>
<td><%=rs.getString("wdate")%></td>
</tr>
</table>
</div>
<%
} else {
out.println("해당 글 없음!!");
}//if end
} catch (Exception e) {
out.println("오라클DB연결실패:" + e);
} finally { //자원반납(순서주의)
try {
if(rs!=null) {rs.close();}
} catch (Exception e) {}
try {
if(pstmt!=null) {pstmt.close();}
} catch (Exception e) {}
try {
if(con!=null) {con.close();}
} catch (Exception e) {}
}//end
%>
</body>
</html>
삭제/수정
sungjukRead.jsp에 삭제, 수정 버튼을 만들고 각각 sungjukDel.jsp, sungjukUpdate.jsp 파일을 만들어 연결시킨다.
sungjukRead.jsp
<tr>
<th class="info">작성일</th>
<td><%=rs.getString("wdate")%></td>
</tr>
</table>
<br><br>
<a href="sungjukUpdate.jsp?sno=<%=sno%>">[수정]</a>
<a href="sungjukDel.jsp?sno=<%=sno%>">[삭제]</a>
</div>
<%
} else {
out.println("해당 글 없음!!");
}//if end
sungjukDel.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sungjukDel.jsp</title>
</head>
<body>
<h3>* 성적 삭제 *</h3>
<p>
<a href="sungjukForm.jsp">[성적쓰기]</a>
<a href="sungjukList.jsp">[성적목록]</a>
</p>
<%
int sno = Integer.parseInt(request.getParameter("sno"));
Connection con = null;
PreparedStatement pstmt = null;
try {
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "system";
String password = "1234";
String driver = "oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
//out.println("오라클 DB 서버 연결 성공!!");
StringBuilder sql = new StringBuilder();
sql.append(" DELETE FROM sungjuk ");
sql.append(" WHERE sno=? ");
pstmt = con.prepareStatement(sql.toString());
pstmt.setInt(1, sno);
int cnt = pstmt.executeUpdate();
if(cnt==0){
out.print("<p>성적 삭제 실패했습니다!!</p>");
out.print("<p><a href='javascript:history.back()'>[다시시도]</a></p>");
} else {
out.print("<script>");
out.print(" alert('성적이 삭제되었습니다~');");
out.print(" location.href='sungjukList.jsp';"); //목록페이지 이동
out.print("</script>");
}//if end
} catch (Exception e) {
out.println("오라클DB연결실패:" + e);
} finally { //자원반납(순서주의)
try {
if(pstmt!=null) {pstmt.close();}
} catch (Exception e) {}
try {
if(con!=null) {con.close();}
} catch (Exception e) {}
}//end
%>
</body>
</html>
sungjukUpdate.jsp
우리가 특정 사이트에서 내 정보를 수정하는 경우를 생각해보자. 보통 정보를 입력할 때와 비슷한 화면에서 수정할 데이터를 입력하여 수정한다.
따라서 수정하고자 하는 행을 DB에서 가져와서, 사용자가 작성했던 내용을 그대로 성적 폼에 출력하고 사용자가 다시 입력한 내용으로 수정해야 한다.
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<%@page import="java.sql.ResultSet"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sungjukUpdate.jsp</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/css/bootstrap.min.css">
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.4.1/js/bootstrap.min.js"></script>
</head>
<body>
<h3>* 성적 수정 *</h3>
<p>
<a href="sungjukForm.jsp">[성적쓰기]</a>
<a href="sungjukList.jsp">[성적목록]</a>
</p>
<%
//수정하고자 하는 글 번호) sungjukRead.jsp?sno=3
int sno = Integer.parseInt(request.getParameter("sno"));
Connection con = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "system";
String password = "1234";
String driver = "oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
//out.println("오라클 DB 서버 연결 성공!!");
//1)단계. select문을 이용해서 수정할 행을 가져온다(sungjukRead.jsp참조)
StringBuilder sql = new StringBuilder();
sql.append(" SELECT sno, uname, kor, eng, mat, aver, addr, wdate ");
sql.append(" FROM sungjuk ");
sql.append(" WHERE sno=? ");
pstmt = con.prepareStatement(sql.toString());
pstmt.setInt(1, sno);
rs = pstmt.executeQuery();
if(rs.next()){
//2)단계. 1)의 내용을 폼에 출력 sungjukForm.jsp 참조
%>
<form name="sungjukfrm" id="sungjukfrm" method="post" action="sungjukUpdateProc.jsp">
<table>
<tr>
<th>이름</th>
<td><input type="text" name="uname" value="<%=rs.getString("uname")%>" maxlength="20" required autofocus></td>
</tr>
<tr>
<th>국어</th>
<td><input type="number" name="kor" value="<%=rs.getInt("kor")%>" size="5" min="0" max="100" placeholder="숫자입력"></td>
</tr>
<tr>
<th>영어</th>
<td><input type="number" name="eng" value="<%=rs.getInt("eng")%>" size="5" min="0" max="100" placeholder="숫자입력"></td>
</tr>
<tr>
<th>수학</th>
<td><input type="number" name="mat" value="<%=rs.getInt("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="Suwon">수원</option>
<option value="Busan">부산</option>
</select>
</td>
</tr>
<tr>
<td colspan="2" align="center">
<input type="submit" value="수정">
<input type="reset" value="취소">
</td>
</tr>
</table>
</form>
<%
} else {
out.println("해당 글 없음!!");
}//if end
} catch (Exception e) {
out.println("오라클DB연결실패:" + e);
} finally { //자원반납(순서주의)
try {
if(rs!=null) {rs.close();}
} catch (Exception e) {}
try {
if(pstmt!=null) {pstmt.close();}
} catch (Exception e) {}
try {
if(con!=null) {con.close();}
} catch (Exception e) {}
}//end
%>
</body>
</html>
우선, 수정 버튼을 클릭하면 수정 페이지로 넘어가는지 확인해보자
수정 페이지로 넘어가면 테이블 조회를 통해 기존에 입력했던 데이터가 나온다.
현재 주소 부분이 무조건 서울로 나온다. 이것을 각 주소에 맞게 출력되게 바꿔야 한다.
<tr>
<th>주소</th>
<td>
<% String addr = rs.getString("addr"); %>
<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="Suwon" <%if (addr.equals("Suwon")) {out.print("selected");}%>>수원</option>
<option value="Busan" <%if (addr.equals("Busan")) {out.print("selected");}%>>부산</option>
</select>
</td>
</tr>
이제 수정 폼에 수정할 정보를 입력하면 데이터가 수정되게 만들어야 한다.
여기서 조건절에 sno 값을 입력해줘야 한다.
버튼을 눌러서 전송시키면 form의 데이터가 넘어가는데 여기에는 sno가 없다. 이 경우 form에 sno를 넣어줘야 한다. 하지만 사용자들이 보는 페이지에서는 sno가 나올 필요가 없다.
이때 hidden을 사용하여 sno의 값은 전송되지만 사용자들에게는 안 보이게 해 줄 수 있다.
<form name="sungjukfrm" id="sungjukfrm" method="post" action="sungjukUpdateProc.jsp">
<input type="hidden" name="sno" value="<%=sno%>">
<table>
<tr>
<th>이름</th>
<td><input type="text" name="uname" value="<%=rs.getString("uname")%>" maxlength="20" required autofocus></td>
</tr>
<tr>
이제 sungjukUpdateProc.jsp를 만들어, 수정 페이지에서 수정할 데이터를 입력하여 수정 버튼을 누르면 데이터가 수정되도록 하자
sungjukUpdateProc.jsp
<%@ page language="java" contentType="text/html; charset=UTF-8"
pageEncoding="UTF-8"%>
<%@page import="java.sql.PreparedStatement"%>
<%@page import="java.sql.Connection"%>
<%@page import="java.sql.DriverManager"%>
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>sungjukUpdateProc.jsp</title>
</head>
<body>
<h3>*성적 수정 결과*</h3>
<p>
<a href="sungjukForm.jsp">[성적쓰기]</a>
<a href="sungjukList.jsp">[성적목록]</a>
</p>
<%
//한글 인코딩
request.setCharacterEncoding("UTF-8");
//사용자가 수정 입력한 정보를 가져와서 변수에 담기
String uname = request.getParameter("uname").trim();
int kor = Integer.parseInt(request.getParameter("kor").trim());
int eng = Integer.parseInt(request.getParameter("eng").trim());
int mat = Integer.parseInt(request.getParameter("mat").trim());
String addr = request.getParameter("addr");
int sno = Integer.parseInt(request.getParameter("sno").trim()); //글번호
int aver=(kor+eng+mat)/3;
Connection con = null;
PreparedStatement pstmt = null;
try {
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "system";
String password = "1234";
String driver = "oracle.jdbc.driver.OracleDriver";
Class.forName(driver);
con = DriverManager.getConnection(url, user, password);
//out.println("오라클 DB 서버 연결 성공!!");
StringBuilder sql = new StringBuilder();
sql.append(" UPDATE sungjuk ");
sql.append(" SET uname=?, kor=?, eng=?, mat=?, aver=?, addr=? ");
sql.append(" WHERE sno=? ");
pstmt = con.prepareStatement(sql.toString());
pstmt.setString(1, uname);
pstmt.setInt(2, kor);
pstmt.setInt(3, eng);
pstmt.setInt(4, mat);
pstmt.setInt(5, aver);
pstmt.setString(6, addr);
pstmt.setInt(7, sno);
int cnt = pstmt.executeUpdate();
if(cnt==0){
out.print("<p>성적 수정이 실패했습니다!!</p>");
out.print("<p><a href='javascript:history.back()'>[다시시도]</a></p>");
} else {
out.print("<script>");
out.print(" alert('성적이 수정되었습니다~');");
out.print(" location.href='sungjukList.jsp';"); //목록페이지 이동
out.print("</script>");
}//if end
} catch (Exception e) {
out.println("오라클DB연결실패:" + e);
} finally { //자원반납(순서주의)
try {
if(pstmt!=null) {pstmt.close();}
} catch (Exception e) {}
try {
if(con!=null) {con.close();}
} catch (Exception e) {}
}//end
%>
</body>
</html>
'웹개발 교육 > jsp' 카테고리의 다른 글
[50일] jsp (15) - Java Bean (0) | 2022.10.07 |
---|---|
[50일] jsp (14) - 계산기 (0) | 2022.10.07 |
[48일] jsp (12) - request 내부 객체의 다양한 메소드 (0) | 2022.10.05 |
[48일] jsp (11) - 다양한 컨트롤 요소 (0) | 2022.10.05 |
[48일] jsp (10) - 계산기 연습 (0) | 2022.10.05 |