MemberDAO 객체가 가진 메서드
- DB에 접속
- 회원 정보 저장
- 전체 회원 정보 불러오기
- 한 회원 정보 조회
- 패스워드 불러오기 (입력한 패스워드와 비교 목적)
- 회원 정보 수정
- 회원 정보 삭제
MemberDAO.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 | package model; import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.util.Vector; //오라클 데이터베이스에 연결하고 쿼리 사용 설정 후 //select insert update delete 작업을 실행해주는 클래스 //모델2패턴, 반복적으로 사용하는 기능(중복해서 쓰는 소스는)은 메서드로 빼주는 것이 좋다 public class MemberDAO { // 오라클에 접속하는 소스를 작성 String id = "system"; // 접속 아이디 String pass = "123456"; String url = "jdbc:oracle:thin:@localhost:1521:XE"; Connection con; // 데이터베이스에 접근할 수 있도록 설정해주는 객체 PreparedStatement pstmt; // 데이터베이스에서 쿼리를 실행시켜주는 객체 ResultSet rs; // 데이터베이스 테이블의 결과를 리턴받아 자바에 저장해주는 객체 // 데이터베이스에 접근할 수 있도록 도와주는 메서드 public void getCon() { try { // 1. 해당 데이터베이스를 사용한다고 선언(클래스 등록 = 오라클용을 사용) Class.forName("oracle.jdbc.driver.OracleDriver"); // 2. 해당 데이터베이스에 접속 con = DriverManager.getConnection(url, id, pass); } catch (Exception e) { } } // 데이터베이스에 한 사람의 회원 정보를 저장해주는 메서드 public void insertMember(MemberBean mbean) { try { getCon(); String sql = "insert into member values(?,?,?,?,?,?,?,?)"; // 쿼리를 사용하도록 설정 PreparedStatement pstmt = con.prepareStatement(sql); // ?에 맞게 데이터를 맵핑 pstmt.setString(1, mbean.getId()); // 첫번째 물음표자리라는 뜻, 값 pstmt.setString(2, mbean.getPassword()); pstmt.setString(3, mbean.getEmail()); pstmt.setString(4, mbean.getTel()); pstmt.setString(5, mbean.getHobby()); pstmt.setString(6, mbean.getJob()); pstmt.setString(7, mbean.getAge()); pstmt.setString(8, mbean.getInfo()); // 4. 오라클에서 쿼리를 실행 pstmt.executeUpdate(); // insert, update, delete시 사용하는 메서드 // 5. 자원 반납 con.close(); } catch (Exception e) { e.printStackTrace(); } } public Vector<MemberBean> allSelectMember() { // 가변 길이로 데이터를 저장 Vector<MemberBean> v = new Vector<MemberBean>(); // 스래드, 네트워크, 데이터베이스는 무조건 try-catch 예외처리 필요 try { // 커넥션 연결 getCon(); // 쿼리 준비 String sql = "select * from member"; // 쿼리 실행 객체 준비 pstmt = con.prepareStatement(sql); // ?없다 // 결과를 리턴해서 쿼리를 실행 시킼 결과를 리턴해서 받아줌 // (오라클테이블의 검색 결과를 자바 객체에 저장) rs = pstmt.executeQuery(); // 반복문을 사용해서 rs에 저장된 데이터를 추출한다 while (rs.next()) { // 저장된 데이터만큼까지 반복문을 돌린다. // 세트로 불러오기 위해 MemberBean 객체로 받아온다. MemberBean bean = new MemberBean(); bean.setId(rs.getString(1));// 안드로이드에선 인덱스 0부터 시작 bean.setPassword(rs.getString(2)); bean.setEmail(rs.getString(3)); bean.setTel(rs.getString(4)); bean.setHobby(rs.getString(5)); bean.setJob(rs.getString(6)); bean.setAge(rs.getString(7)); bean.setInfo(rs.getString(8)); // 인덱스 바꾸는것 잊지말기 // 패키징 완료 // (resultset 객체로 데이터를 받아와서 멤버빈으로 패키징) // 패키징된 MmeberBean 클래스를 벡터에 저장 v.add(bean); // 인덱스 0부터 저장 } con.close(); } catch (Exception e) { } return v; } public MemberBean oneSelectMember(String id) { MemberBean bean = new MemberBean(); try { // 커넥션 연결 getCon(); // 쿼리 준비 // 쿼리문에서 원하는 데이터부분을 ?로 처리 String sql = "select * from member where id=?"; // 쿼리 실행 객체 준비 pstmt = con.prepareStatement(sql); // ?에 값을 맵핑 pstmt.setString(1, id); // 쿼리 실행 rs = pstmt.executeQuery(); if (rs.next()) {// 레코드가 있다면 bean.setId(rs.getString(1));// 안드로이드에선 인덱스 0부터 시작 bean.setPassword(rs.getString(2)); bean.setEmail(rs.getString(3)); bean.setTel(rs.getString(4)); bean.setHobby(rs.getString(5)); bean.setJob(rs.getString(6)); bean.setAge(rs.getString(7)); bean.setInfo(rs.getString(8)); // 인덱스 바꾸는것 잊지말기 } con.close(); } catch (Exception e) { } return bean; } public String getPass(String id) { String password = ""; try { getCon(); // 쿼리 준비 String sql = "select password from member where id=?"; pstmt = con.prepareStatement(sql); // ?에 값을 맵핑 pstmt.setString(1, id); // 쿼리 실행 rs = pstmt.executeQuery(); if (rs.next()) { // 데이터가 있다면 password = rs.getString(1); // 패스워드 값이 저장된 컬럼인덱스 } // 자원 반납 con.close(); } catch (Exception e) { } return password; } // 한 회원의 정보를 수정하는 메서드 public void updateMember(MemberBean bean) { try { getCon(); // 쿼리 준비 String sql = "update member set email=?, tel=? where id=?"; // 쿼리 실행 객체 선언 pstmt = con.prepareStatement(sql); // ?에 값을 맵핑 pstmt.setString(1, bean.getEmail()); pstmt.setString(2, bean.getTel()); pstmt.setString(3, bean.getId()); // 쿼리 실행 pstmt.executeUpdate(); // 자원반납 con.close(); } catch (Exception e) { } } public void deleteMember(String id) { try { getCon(); // 쿼리 준비 String sql = "delete from member where id=?"; // 쿼리 실행 객체 선언 pstmt = con.prepareStatement(sql); // ?에 값을 맵핑 pstmt.setString(1, id); // 쿼리 실행 pstmt.executeUpdate(); // 자원반납 con.close(); } catch (Exception e) { } } } | cs |
1. 회원가입 페이지
MemberJoin.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 | <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <div style="text-align:center;"> <h2 align="center">회원가입</h2> <form align="center" action="MemberJoinProc.jsp" method="post"> <table align="center" width="500" border="1"> <tr height="50"> <td width="150" align="center">아이디</td> <td width="350" align="center" ><input type="text" name="id" placeholder="id를 입력하세요" size="40"></td> </tr> <tr height="50"> <td width="150" align="center">패스워드</td> <td width="350" align="center"><input type="password" name="password" placeholder="비밀번호는 영문과 숫자만 넣어주세요" size="40"></td> </tr> <tr height="50"> <td width="150" align="center">패스워드 확인</td> <td width="350" align="center"><input type="password" name="password2" size="40"></td> </tr> <tr height="50"> <td width="150" align="center">이메일</td> <td width="350" align="center"><input type="email" name="email" size="40"></td> </tr> <tr height="50"> <td width="150" align="center">전화번호</td> <td width="350" align="center"><input type="tel" name="tel" size="40"></td> </tr> <tr height="50"> <td width="150" align="center">당신의 관심분야</td> <td width="350" align="center"> <input type="checkbox" name="hobby" value="캠핑"> 캠핑 <input type="checkbox" name="hobby" value="독서"> 독서 <input type="checkbox" name="hobby" value="영화"> 영화 <input type="checkbox" name="hobby" value="등산"> 등산 </td> </tr> <tr height="50"> <td width="150" align="center">당신의 직업</td> <td width="350" align="center"><select name="job"> <option value="교사">교사</option> <option value="개발자">개발자</option> <option value="의사">의사</option> <option value="상담사">상담사</option> </select></td> </tr> <tr height="50"> <td width="150" align="center">당신의 연령</td> <td width="350" align="center"><input type="radio" name="age" value="10">10대 <input type="radio" name="age" value="20">20대 <input type="radio" name="age" value="30">30대 <input type="radio" name="age" value="40">40대 </td> </tr> <tr height="50"> <td width="150" align="center">남기고 싶은 말</td> <td width="350" align="center"><textarea rows="5" cols="40" name="info"> </textarea></td> </tr> <tr height="50"> <td align="center" colspan="2"><input type="submit" value="회원가입"> <input type="reset" value="다시 입력"></td> </tr> </table> </form> </div> </body> </html> | cs |
회원가입 처리 페이지
MemberJoinProc.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 | <%@page import="model.MemberDAO"%> <%@page import="java.sql.PreparedStatement"%> <%@page import="java.sql.DriverManager"%> <%@page import="java.sql.Connection"%> <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%> <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>Insert title here</title> </head> <body> <% //request객체는 스크립트릿 안에 쓰기는 하지만 자바로 못넘어가기 때문에 jsp에서 쓸 수 밖에 없다 request.setCharacterEncoding("UTF-8"); String[] hobby = request.getParameterValues("hobby"); String texthobby = ""; for (String hob : hobby) { texthobby += hob + " "; } %> <jsp:useBean id="mbean" class="model.MemberBean"> <jsp:setProperty name="mbean" property="*" /> </jsp:useBean> <% mbean.setHobby(texthobby); MemberDAO mdao = new MemberDAO(); mdao.insertMember(mbean); response.sendRedirect("MemberList.jsp"); %> 오라클에 데이터 이동 완료 </body> </html> | cs |
회원 리스트 페이지
MemberList.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | <%@page import="model.*"%> <%@page import="java.util.Vector"%> <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Insert title here</title> </head> <body> <!--db에서 가져온 회원정보를 출력해주는 리스트페이지 --> <% //*DAO (Data Access Object) //DAO 객체에서 수행한 것을 불러와야하므로 DAO객체부터 생성 MemberDAO mdao = new MemberDAO(); //vector를 반환하므로 vector 변수로 받아줌 Vector<MemberBean> vec = mdao.allSelectMember(); %> <center> <table width="600" border="1"> <tr height="50"> <td align="center" width="150">아이디</td> <td align="center" width="250">이메일</td> <td align="center" width="200">전화번호</td> <td align="center" width="200">취미</td> </tr> <% for (int i = 0; i < vec.size(); i++) { MemberBean bean = vec.get(i); %> <tr height="50"> <td align="center" width="150"> <a href="MemberInfo.jsp?id=<%=bean.getId()%>"> <%=bean.getId()%></a></td> <td align="center" width="250"><%=bean.getEmail()%></td> <td align="center" width="200"><%=bean.getTel()%></td> <td align="center" width="200"><%=bean.getHobby()%></td> </tr> <% } %> </table> </body> </html> | cs |
한 회원 정보 보기 페이지
MemberInfo.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 | <%@page import="model.*"%> <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <head> <meta charset="EUC-KR"> <title>Insert title here</title> </head> <body> <!-- 1. db에서 한 회원의 정보를 가져옴 2.table태그를 이용하여 회원의 정보 출력--> <!-- MemberList에서 넘긴 한 회원의 id를 받아와야한다. --> <% //도메인으로 넘겨받은 id는 request 객체로 받아와야한다. String id = request.getParameter("id"); MemberDAO mdao = new MemberDAO(); MemberBean mbean = mdao.oneSelectMember(id); %> <center> <h2>회원 정보 보기</h2> <table width="400" border="1"> <tr height="50"> <td align="center" width="150">아이디</td> <td align="center" width="250"><%=mbean.getId()%></td> </tr> <tr height="50"> <td align="center" width="150">이메일</td> <td align="center" width="250"><%=mbean.getEmail()%></td> </tr> <tr height="50"> <td align="center" width="150">전화</td> <td align="center" width="150"><%=mbean.getTel()%></td> </tr> <tr height="50"> <td align="center" width="150">취미</td> <td align="center" width="250"><%=mbean.getHobby()%></td> </tr> <tr height="50"> <td align="center" width="150">직업</td> <td align="center" width="250"><%=mbean.getJob()%></td> </tr> <tr height="50"> <td align="center" width="150">나이</td> <td align="center" width="250"><%=mbean.getAge()%></td> </tr> <tr height="50"> <td align="center" width="150">정보</td> <td align="center" width="250"><%=mbean.getInfo()%></td> </tr> <tr height="50"> <td align="center" colspan ="2"> <button onclick="location.href='MemberUpdateForm.jsp?id=<%=mbean.getId()%>'"> 회원수정 </button> <button onclick="location.href='MemberDeleteForm.jsp?id=<%=mbean.getId()%>'"> 회원삭제 </button> <button onclick="location.href='MemberList.jsp'"> 목록보기 </button> <button onclick="location.href='MemberJoin.jsp'"> 회원가입 </button> </td> </tr> </table> </center> </body> </html> | cs |
회원 정보 업데이트 페이지
MemberUpdateFrom.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <%@page import="model.MemberBean"%> <%@page import="model.MemberDAO"%> <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <body> <% //도메인으로 넘겨받은 id는 request 객체로 받아와야한다. String id = request.getParameter("id"); MemberDAO mdao = new MemberDAO(); MemberBean mbean = mdao.oneSelectMember(id); %> <center> <h2>회원 정보 수정하기</h2> <table width="400" border="1"> <form action="MemberUpdateProc.jsp" method="post"> <tr height="50"> <td align="center" width="150">아이디</td> <td align="center" width="250"><%=mbean.getId()%></td> </tr> <tr height="50"> <td align="center" width="150">이메일</td> <td align="center" width="250"> <input type="email" name="email" value="<%=mbean.getEmail()%>"> </td> </tr> <tr height="50"> <td align="center" width="150">전화</td> <td align="center" width="150"> <input type="tel" name="tel" value="<%=mbean.getTel()%>"> </td> </tr> <tr height="50"> <td align="center" width="150">패스워드 확인</td> <td align="center" width="250"> <input type="password" name="password"> </td> </tr> <tr height="50"> <td align="center" colspan ="2"> <input type="hidden" name="id" value = <%=mbean.getId() %>> <input type="submit" value = "정보 수정하기"> </form> <button onclick="location.href='MemberList.jsp'"> 회원 전체 보기 </button> </td> </tr> </table> </center> </body> </html> | cs |
회원 정보 수정 처리 페이지
MemberUpdateProc.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | <%@page import="model.MemberDAO"%> <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <body> <% request.setCharacterEncoding("euc-kr"); %> <!-- 입력한 받은 값을 멤버빈에 자동으로 맵핑할 때에는 usebean 사용 --> <jsp:useBean id="mbean" class="model.MemberBean"> <jsp:setProperty name="mbean" property="*" /> </jsp:useBean> <% MemberDAO mdao = new MemberDAO(); //스트링 타입으로 저장돼있는 패스워드를 가져옴 String password = mdao.getPass(mbean.getId()); //수정하기 위해서 입력한 패스워드 값과 기존 데이터에서 가져온 패스워드 비교 if (mbean.getPassword().equals(password)) { //MemberDAO 클래스의 회원 수정 클래스 호출 mdao.updateMember(mbean); response.sendRedirect("MemberList.jsp"); } else { %> <script type="text/javascript"> alert("패스워드가 일치하지 않습니다. 다시 확인해주세요."); history.go(-1); </script> <% } %> </body> </html> | cs |
회원 삭제 페이지
MemberDeleteForm.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 | <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <body> <center> <h2>회원 삭제하기</h2> <table width="400" border="1"> <form action="MemberDeleteProc.jsp" method="post"> <tr height="50"> <td align="center" width="150">아이디</td> <td align="center" width="250"><%=request.getParameter("id")%></td> </tr> <tr height="50"> <td align="center" width="150">패스워드</td> <td align="center" width="250"> <input type="password" name="password"> </td> </tr> <tr height="50"> <td align="center" colspan ="2"> <input type="hidden" name="id" value = <%=request.getParameter("id")%>> <input type="submit" value = "회원 삭제하기"> </form> <button onclick="location.href='MemberList.jsp'"> 회원 전체 보기 </button> </td> </tr> </table> </center> </body> </html> | cs |
회원 삭제 처리 페이지
MemberDeleteProc.jsp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <%@page import="model.MemberDAO"%> <%@ page language="java" contentType="text/html; charset=EUC-KR" pageEncoding="EUC-KR"%> <!DOCTYPE html> <html> <body> <% request.setCharacterEncoding("euc-kr"); %> <!-- 입력한 받은 값을 멤버빈에 자동으로 맵핑할 때에는 usebean 사용 --> <jsp:useBean id="mbean" class="model.MemberBean"> <jsp:setProperty name="mbean" property="*" /> </jsp:useBean> <% MemberDAO mdao = new MemberDAO(); //스트링 타입으로 저장돼있는 패스워드를 가져옴 String password = mdao.getPass(mbean.getId()); //수정하기 위해서 입력한 패스워드 값과 기존 데이터에서 가져온 패스워드 비교 if (mbean.getPassword().equals(password)) { //MemberDAO 클래스의 회원 수정 클래스 호출 mdao.deleteMember(mbean.getId());//id를 기준으로 삭제만 하면 된다. response.sendRedirect("MemberList.jsp"); } else { %> <script type="text/javascript"> alert("패스워드가 일치하지 않습니다. 다시 확인해주세요."); history.go(-1); </script> <% } %> </body> </html> | cs |
'DB > Oracle' 카테고리의 다른 글
oracle 11g 트랜잭션 관리COMMIT ROLLBACKDML 인강 (0) | 2019.05.31 |
---|---|
Oracle sql developer tool : oracle developer the network adapter could not establish the connection (0) | 2019.05.28 |
커넥션풀(DBCP) (0) | 2019.05.07 |
JSP와 데이터베이스 연동-2 (0) | 2019.05.06 |
JSP와 데이터베이스 연동-1 (0) | 2019.05.02 |