728x90
반응형
■ Quiz 5
com.mvc.basic.quiz5 package 생성
□ 2개의 인터페이스 생성
<IMemberDAO.java>
<IMemberService.java>
□ MemberDTO
package com.mvc.basic.quiz5;
public class MemberDTO {
private String id;
private String pw;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
□ MemberDAOImpl
IMemberDAO 인터페이스를 상속받는다. (Override)
package com.mvc.basic.quiz5;
import java.util.ArrayList;
public class MemberDAOImpl implements IMemberDAO {
private ArrayList<MemberDTO> members = new ArrayList<>();
@Override
public void insert(MemberDTO member) {
members.add(member);
}
@Override
public MemberDTO selectId(String id) {
for(MemberDTO m : members) {
if(m.getId().equals(id)) {
return m;
}
}
return null;
}
@Override
public void delete(MemberDTO deleteMember) {
members.remove(deleteMember);
}
@Override
public ArrayList<MemberDTO> selectAll() {
return members;
}
@Override
public void update(int index, MemberDTO updateMember) {
members.set(index, updateMember);
}
public int selectIndex(String id) {
for(MemberDTO m : members) {
if(m.getId().equals(id)) {
return members.indexOf(m);
}
}
return -1;
}
}
□ MemberServiceImpl
IMemberService 인터페이스를 상속받는다. (Override)
필요한 경우에 유효성 검사를 진행한다.
package com.mvc.basic.quiz5;
import java.util.ArrayList;
public class MemberServiceImpl implements IMemberService {
private MemberDAOImpl memberDao = new MemberDAOImpl();
@Override
public void insert(String id, String pw, String name) {
if(id == "" || id == null) {
System.out.println("비정상적인 아이디입니다.");
return;
}
if(pw == "" || pw == null) {
System.out.println("비정상적인 비밀번호입니다.");
return;
}
if(name == "" || name == null) {
System.out.println("비정상적인 이름입니다.");
return;
}
MemberDTO check = memberDao.selectId(id);
if(check == null) {
MemberDTO member = new MemberDTO();
member.setId(id);
member.setPw(pw);
member.setName(name);
memberDao.insert(member);
System.out.println("회원가입이 완료되었습니다.");
} else {
System.out.println("이미 가입한 아이디입니다.");
}
}
@Override
public void selectId(String id) {
MemberDTO member = memberDao.selectId(id);
if(member == null) {
System.out.println("아이디 정보가 존재하지 않습니다.");
} else {
System.out.println("## 검색결과 ##");
System.out.println("아이디 : " + member.getId());
System.out.println("비밀번호 : " + member.getPw());
System.out.println("이름: " + member.getName());
}
}
@Override
public void delete(String id) {
MemberDTO deleteMember = memberDao.selectId(id);
if(deleteMember != null) {
memberDao.delete(deleteMember);
System.out.print("회원 정보가 삭제되었습니다.");
} else {
System.out.println("해당 아이디와 일치하는 정보가 존재하지 않습니다.");
}
}
@Override
public void selectAll() {
ArrayList<MemberDTO> members = memberDao.selectAll();
if(members.isEmpty() == true) {
System.out.println("데이터가 존재하지 않습니다.");
}else {
System.out.println("### 모든 회원 정보 ###");
for(MemberDTO m : members) {
System.out.println("아이디 : " + m.getId());
System.out.println("비밀번호 : " + m.getPw());
System.out.println("이름: " + m.getName());
System.out.println();
}
}
}
@Override
public void update(String id, String currentPw, String changePw) {
// 사용자가 입력한 현재 비밀번호, 변경 비밀번호
// 사용자가 입력한 현재 비밀번호와 저장된 현재 비밀번호를 검증한다.
// 같으면 수정가능, 다르면 안 됨.
MemberDTO check = memberDao.selectId(id);
if(check != null) {
if(check.getPw().equals(currentPw)) {
int index = memberDao.selectIndex(id);
check.setPw(changePw);
memberDao.update(index, check);
System.out.println("비밀번호가 수정되었습니다.");
} else {
System.out.println("비밀번호가 일치하지 않습니다.");
}
} else {
System.out.println("아이디 정보가 존재하지 않습니다.");
}
}
}
□ Main
package com.mvc.basic.quiz5;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
/*
* 회원 관리 프로그램 만들기 : 1~5번에 해당하는 메소드 구현
* 1.회원등록 : id, password, name 3개의 정보를 id는 중복되지 않도록 등록함.
* 2.회원검색 : id를 이용하여 회원 정보를 검색하여 출력함.
* 3.회원삭제 : id를 이용하여 회원 정보를 삭제함.
* 4.회원 모두 보기 : 모든 정보 출력함.
* 5.비밀번호 수정 : id를 이용하여 비밀번호를 수정함.
* 6.프로그램 종료 : 프로그램을 종료함.
*/
Scanner sc = new Scanner(System.in);
IMemberService memberService = new MemberServiceImpl();
String id;
while(true) {
System.out.println("1. 회원 등록");
System.out.println("2. 회원 검색");
System.out.println("3. 회원 삭제");
System.out.println("4. 회원 모두 보기");
System.out.println("5. 비밀번호 수정");
System.out.println("6. 프로그램 종료");
System.out.print(">>> ");
String select = sc.next();
switch(select) {
case "1": System.out.println(" === 회원 등록 === ");
System.out.print("아이디 : "); id = sc.next();
System.out.print("비밀번호 : "); String pw = sc.next();
System.out.print("이름 : "); String name = sc.next();
memberService.insert(id, pw, name);
break;
case "2": System.out.println(" === 회원 검색 === ");
System.out.print("아이디 : "); id = sc.next();
memberService.selectId(id);
break;
case "3": System.out.println(" === 회원 삭제 === ");
System.out.print("아이디 : "); id = sc.next();
memberService.delete(id);
break;
case "4": memberService.selectAll(); break;
case "5": System.out.println(" === 비밀번호 수정 === ");
System.out.print("아이디 : "); id = sc.next();
System.out.print("현재 비밀번호 : "); String currentPw = sc.next();
System.out.print("변경 비밀번호 : "); String changePw = sc.next();
memberService.update(id, currentPw, changePw);
break;
case "6": System.out.println("프로그램을 종료합니다."); System.exit(0);
default: System.out.println("메뉴 확인 후 다시 입력하세요.");
}
}
}
}
■ Quiz 6
com.mvc.basic.quiz6 package 생성
이번에는 데이터베이스와 연동해서 회원관리 프로그램을 만든다.
따라서 https://mvnrepository.com/ 에서 'ojdbc8'을 검색 후 코드를 복사해 추가해야 한다.
연동을 위해 pom.xml에 <dependencies> 태그 안에 다음과 같은 태그를 삽입한다.
□ 2개의 인터페이스 생성
<IMemberDAO.java>
<IMemberService.java>
□ MemberDTO
package com.mvc.basic.quiz6;
public class MemberDTO {
private String id;
private String pw;
private String name;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getPw() {
return pw;
}
public void setPw(String pw) {
this.pw = pw;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
□ MemberDAOImpl
IMemberDAO 인터페이스를 상속받는다. (Override)
package com.mvc.basic.quiz6;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
public class MemberDAOImpl implements IMemberDAO{
private Connection con;
public MemberDAOImpl() {
String url = "jdbc:oracle:thin:@localhost:1521:xe";
String user = "spring1212";
String password = "oracle";
try {
Class.forName("oracle.jdbc.OracleDriver");
con = DriverManager.getConnection(url, user, password);
} catch (Exception e) {
e.printStackTrace();
}
}
@Override
public void insert(MemberDTO member) {
PreparedStatement ps = null;
String sql = "INSERT INTO db_basic VALUES(?,?,?)";
try {
ps = con.prepareStatement(sql);
ps.setString(1, member.getId());
ps.setString(2, member.getPw());
ps.setString(3, member.getName());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(ps != null) ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
@Override
public MemberDTO selectId(String id) {
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "SELECT * FROM db_basic WHERE id=?";
try {
ps = con.prepareStatement(sql);
ps.setString(1, id);
rs = ps.executeQuery();
if(rs.next()) {
MemberDTO member = new MemberDTO();
member.setId(rs.getString("id"));
member.setPw(rs.getString("pw"));
member.setName(rs.getString("name"));
return member;
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(rs != null) rs.close();
if(ps != null) ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return null;
}
@Override
public void delete(MemberDTO deleteMember) {
PreparedStatement ps = null;
String sql = "DELETE FROM db_basic WHERE id=?";
try {
ps = con.prepareStatement(sql);
ps.setString(1, deleteMember.getId());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(ps != null) ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
@Override
public ArrayList<MemberDTO> selectAll() {
PreparedStatement ps = null;
ResultSet rs = null;
String sql = "SELECT * FROM db_basic";
ArrayList<MemberDTO> members = new ArrayList<MemberDTO>();
try {
ps = con.prepareStatement(sql);
rs = ps.executeQuery();
while(rs.next()) {
MemberDTO member = new MemberDTO();
member.setId(rs.getString("id"));
member.setPw(rs.getString("pw"));
member.setName(rs.getString("name"));
members.add(member);
}
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(rs != null) rs.close();
if(ps != null) ps.close();
} catch (Exception e) {
e.printStackTrace();
}
}
return members;
}
@Override
public void update(MemberDTO updateMember) {
PreparedStatement ps = null;
String sql = "UPDATE db_basic SET pw=? WHERE id=?";
// String sql = "UPDATE db_basic SET pw=?, name=? WHERE id=?";
try {
ps = con.prepareStatement(sql);
ps.setString(1, updateMember.getPw());
ps.setString(2, updateMember.getId());
ps.executeUpdate();
} catch (SQLException e) {
e.printStackTrace();
}finally {
try {
if(ps != null) ps.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
□ MemberServiceImpl
IMemberService 인터페이스를 상속받는다. (Override)
필요한 경우에 유효성 검사를 진행한다.
package com.mvc.basic.quiz6;
import java.util.ArrayList;
public class MemberServiceImpl implements IMemberService {
private MemberDAOImpl memberDao = new MemberDAOImpl();
@Override
public void insert(String id, String pw, String name) {
if(id == "" || id == null) {
System.out.println("비정상적인 아이디입니다.");
return;
}
if(pw == "" || pw == null) {
System.out.println("비정상적인 비밀번호입니다.");
return;
}
if(name == "" || name == null) {
System.out.println("비정상적인 비밀번호입니다.");
return;
}
MemberDTO check = memberDao.selectId(id);
if(check == null) {
MemberDTO member = new MemberDTO();
member.setId(id);
member.setPw(pw);
member.setName(name);
memberDao.insert(member);
System.out.println("회원가입이 완료되었습니다.");
} else {
System.out.println("이미 가입한 아이디입니다.");
}
}
@Override
public void selectId(String id) {
MemberDTO member = memberDao.selectId(id);
if(member == null) {
System.out.println("아이디 정보가 존재하지 않습니다.");
} else {
System.out.println("## 검색결과 ##");
System.out.println();
System.out.println("아이디 : " + member.getId());
System.out.println("비밀번호 : " + member.getPw());
System.out.println("이름: " + member.getName());
}
}
@Override
public void delete(String id) {
MemberDTO deleteMember = memberDao.selectId(id);
if(deleteMember != null) {
memberDao.delete(deleteMember);
System.out.print("회원 정보가 삭제되었습니다.");
} else {
System.out.println("해당 아이디와 일치하는 정보가 존재하지 않습니다.");
}
}
@Override
public void selectAll() {
ArrayList<MemberDTO> members = memberDao.selectAll();
if(members.isEmpty() == true) {
System.out.println("데이터가 존재하지 않습니다.");
}else {
System.out.println("### 모든 회원 정보 ###");
System.out.println();
for(MemberDTO m : members) {
System.out.println("아이디 : " + m.getId());
System.out.println("비밀번호 : " + m.getPw());
System.out.println("이름: " + m.getName());
System.out.println();
}
}
}
@Override
public void update(String id, String currentPw, String changePw) {
// 사용자가 입력한 현재 비밀번호, 변경 비밀번호
// 사용자가 입력한 현재 비밀번호와 저장된 현재 비밀번호를 검증한다.
// 같으면 수정가능, 다르면 안 됨.
MemberDTO check = memberDao.selectId(id);
if(check != null) {
if(check.getPw().equals(currentPw)) {
check.setPw(changePw);
memberDao.update(check);
System.out.println("비밀번호가 수정되었습니다.");
} else {
System.out.println("비밀번호가 일치하지 않습니다.");
}
} else {
System.out.println("아이디 정보가 존재하지 않습니다.");
}
}
}
□ Main
package com.mvc.basic.quiz6;
import java.util.Scanner;
public class Main {
public static void main(String[] args) {
/*
* 회원 관리 프로그램 만들기 : 1~5번에 해당하는 메소드 구현
* 1.회원등록 : id, password, name 3개의 정보를 id는 중복되지 않도록 등록함.
* 2.회원검색 : id를 이용하여 회원 정보를 검색하여 출력함.
* 3.회원삭제 : id를 이용하여 회원 정보를 삭제함.
* 4.회원 모두 보기 : 모든 정보 출력함.
* 5.비밀번호 수정 : id를 이용하여 비밀번호를 수정함.
* 6.프로그램 종료 : 프로그램을 종료함.
*/
Scanner sc = new Scanner(System.in);
IMemberService memberService = new MemberServiceImpl();
String id;
while(true) {
System.out.println("1. 회원 등록");
System.out.println("2. 회원 검색");
System.out.println("3. 회원 삭제");
System.out.println("4. 회원 모두 보기");
System.out.println("5. 비밀번호 수정");
System.out.println("6. 프로그램 종료");
System.out.print(">>> ");
String select = sc.next();
switch(select) {
case "1": System.out.println(" === 회원 등록 === ");
System.out.print("아이디 : "); id = sc.next();
System.out.print("비밀번호 : "); String pw = sc.next();
System.out.print("이름 : "); String name = sc.next();
memberService.insert(id, pw, name);
break;
case "2": System.out.println(" === 회원 검색 === ");
System.out.print("아이디 : "); id = sc.next();
memberService.selectId(id);
break;
case "3": System.out.println(" === 회원 삭제 === ");
System.out.print("아이디 : "); id = sc.next();
memberService.delete(id);
break;
case "4": memberService.selectAll(); break;
case "5": System.out.println(" === 비밀번호 수정 === ");
System.out.print("아이디 : "); id = sc.next();
System.out.print("현재 비밀번호 : "); String currentPw = sc.next();
System.out.print("변경 비밀번호 : "); String changePw = sc.next();
memberService.update(id, currentPw, changePw);
break;
case "6": System.out.println("프로그램을 종료합니다."); System.exit(0);
default: System.out.println("메뉴 확인 후 다시 입력하세요.");
}
}
}
}
728x90
반응형
'IT&코딩 > Spring' 카테고리의 다른 글
Spring - 6일차 (mvc_quiz) (0) | 2022.12.19 |
---|---|
Spring - 5일차 (MVC2 모델 실습) (0) | 2022.12.15 |
Spring - 4일차 (MVC2 모델 이론) (0) | 2022.12.15 |
Spring - 2일차 (MVC_1) (0) | 2022.12.12 |
Spring - 1일차 (기본 설정 관련) (0) | 2022.12.12 |