일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 자바
- 함수 선언
- DoIt
- 생성자
- 크롤링
- 함수
- 키-값 데이터베이스
- 숫자형식오류
- 페이지분석
- 예외
- HTML역사
- 예제
- DoitSQL
- 배열 예제
- 웹 브라우저 전쟁
- 크롤링 오류
- Doit입문SQL
- 숫자 형식
- DoitSQL입문
- R1C3
- 자바 예외
- 웹브라우저 수용도
- SQL
- 자바 오류
- 배열 3요소
- dbms
- SQL입문
- 우아한테크
- 데이터베이스
- html
Archives
- Today
- Total
프로그래밍
[자바 기초] day19 : MVC 패턴 심화(회원관리) 본문
728x90
반응형
2023.05.25.화
MVC 패턴 심화(회원관리)
장바구니, 로그인한 회원정보 등은 전페가 같은 데이터인 것이 아닌 각 회원마다(client) 달라야하기 때문에 컨트롤러에서 다루는 것이 옳다
MemberDAO
package model;
import java.util.ArrayList;
// 회원목록출력
// 회원가입,로그인,로그아웃,마이페이지,회원탈퇴
public class MemberDAO {
private ArrayList<MemberVO> datas;
public MemberDAO() {
datas = new ArrayList<MemberVO>();
datas.add(new MemberVO("admin", "1234", "관리자"));
datas.add(new MemberVO("coding_helper", "timo", "작은 티모"));
}
public ArrayList<MemberVO> selectAll(MemberVO mVO) {
return datas;
}
public MemberVO selectOne(MemberVO mVO) {
for(MemberVO v:datas) {
if(mVO.getMid().equals(v.getMid())) {
if(mVO.getMpw().equals(v.getMpw())) {
return v;
}
System.out.println("로그: MemberDAO: selectOne(): 비밀번호가 일치하지 않습니다");
return null;
}
}
System.out.println("로그: MemberDAO: selectOne(): 해당 아이디가 없습니다");
return null;
}
public boolean insert(MemberVO mVO) {
boolean flag = false;
for (MemberVO data : datas) {
if (data.equals(mVO)) {
flag = true;
System.out.println(" 로그: MemberDAO: insert(): 아이디 중복");
break;
}
}
if (flag) {
return false;
}
datas.add(new MemberVO(mVO.getMid(), mVO.getMpw(), mVO.getName()));
/*
* datas.add(new MemberVO()); -> datas DB공간에 new 새로운 데이터를 추가
* MemberVO(데이터1,데이터2,데이터3) -> 데이터들을 mVO에서 추출하면됨
*/
return true;
// 1. mVO가 의미하는것 == 회원가입할 정보
// 2. mVO를내가 가지고 있는 datas에 넣음
// 3. PK이기 때문에 중복검사하고 성공시 add 실패시 반환
}
public boolean update(MemberVO mVO) {
// 회원 비밀번호 변경
for (MemberVO data : datas) {
if (data.getMid().equals(mVO.getMid())) {
data.setMpw(mVO.getMpw());
return true;
}
}
System.out.println(" 로그: MemberDAO: update(): 해당 회원이 없습니다");
return false;
}
public boolean delete(MemberVO mVO) {
for(int i=0; i<datas.size(); i++) {
if(datas.get(i).equals(mVO)) {
// PK값이 같다면 동일한 객체 ---> 오버라이딩
datas.remove(i);
return true;
}
}
System.out.println(" 로그: MemberDAO: delete(): 해당 회원이 없습니다");
return false;
}
}
Ctrl
package ctrl;
import java.util.ArrayList;
import model.MemberDAO;
import model.MemberVO;
import model.ProductDAO;
import model.ProductVO;
import view.AdminView;
import view.ClientView;
public class Ctrl {
private MemberDAO mDAO;
private ProductDAO pDAO;
private AdminView admin;
private ClientView client;
private MemberVO member; // 현재 로그인한 회원
public Ctrl() {
mDAO = new MemberDAO();
pDAO = new ProductDAO();
admin = new AdminView();
client = new ClientView();
member = null; // 세션 로그인 데이터
// member은 초기화하지 않음
// 프로그램을 실행한다고 해서 자동로그인 되는 것은 아니기 때문
}
// public Ctrl(MemberVO member) { //자동 로그인
// mDAO = new MemberDAO();
// pDAO = new ProductDAO();
// admin = new AdminView();
// client = new ClientView();
// this.member = null; // 세션 로그인 데이터
// // member은 초기화하지 않음
// // 프로그램을 실행한다고 해서 자동로그인 되는 것은 아니기 때문
// }
public void startApp() {
while (true) {
int action = client.printClientMenu01(); // 1.2.3.
if (action == 1234) {
while (true) {
action = admin.printAdminMenu();
if (action == 1) { // 회원목록출력 1.2.
ArrayList<MemberVO> datas = mDAO.selectAll(null); // 3.4.5.
// 7. 6.
admin.printMemberList(datas);
// 8.
// 1. 사용자가 관리자인상황.
// 2. 관리자가 회원목록볼래~
// 3. V가 C한테 말합니다. 회원목록보겠다는데?
// 4. C가 아, 회원목록데이터가 필요하구나? ㅇㅋ
// 5. M한테 회원목록 좀 줘~
// 6. M이 selectAll()합니다.
// 7. AL<MVO>가 반환되고 C는 그걸-
// 8. -V한테 줍니다.
// admin.printMemberList(mDAO.selectAll(null));
} else if (action == 2) {
admin.printAdminEnd();
break;
}
}
} else if (action == 1) {
MemberVO mVO = client.signUp();
boolean flag = mDAO.insert(mVO);
if (flag) {
client.signUpTrue();
} else {
client.signUpFalse();
}
// 1. 사용자가 console에 회원가입할래~ 1번입력
// 2. V는 입력한 값을 C한테 전달
// 3. C는 아~ 회원가입하고싶구나? ㅇㅋ
// 4. C는 V한테 회원가입할 정보를 입력받아오라고 지시
// 5. V는 사용자한테 회원가입창 보여줌
// 6. 사용자는 정보를 입력
// 7. V는 사용자가 입력한 정보를 C한테 전달
// 8. C는 이 정보를 M한테 전달
// 9. M은 회원가입을 수행
// 10. M은 insert()가 잘되었는지아닌지를 T,F를 반환
// 11. C는 결과에따라 맞는 V화면을 보여줄수있도록 지시
// 12. 사용자는 V가 보여주는 화면을 보게됨
} else if (action == 2) {
// 1. 아이디입력해봐! 라고 V가 사용자에게 요청
// 2. 비밀번호도 같이 입력해~~
// 3. C는 이 정보가 있는지, 그리고 맞는지(==유효한지)
// 위의 여부를 M한테 판단을 부탁함
// --->> selectOne()
// 4. M은 VO를 반환 == 존재하는 회원
// 5. -> 로그인 성공 V
// => 다음 스텝으로 이동
// null을 반환 == 없거나, 비밀번호가 틀림!
// 6. -> 로그인 실패 V
// => 프로그램 모드에 계속 있어야함...
MemberVO mVO = client.signIn(); // 1. 2.
member = mDAO.selectOne(mVO); // 3.
// 유효한 사용자 정보 or null(로그인 실패시)
// 유효한 사용자 정보 == 현재 로그인한 회원
if (member == null) {
client.signInFalse();
continue;
}
client.signInTrue();
while (true) { // 사용자모드 진입
action = client.printClientMenu02(member);
if (action == 1) { // 로그아웃
member = null;
// 사용자가 로그아웃을 원하면,
// C에 mdata가 현재 존재하는데, 이걸
// 제거하고
// 로그아웃이 되었음을 사용자에게 알려주자!~~
client.logout();
client.printClientEnd02();
break;
} else if (action == 2) { // 마이페이지
String mpw = client.mypage(member);
MemberVO mdata = new MemberVO(member.getMid(), mpw, member.getName());
boolean flag = mDAO.update(mdata);
if (flag) {
client.printMemberChangeTrue();
} else {
client.printMemberChangeFalse();
}
} else if (action == 3) { // 회원탈퇴
// 현재 로그인한 상황.
// 비밀번호를 한번더 확인하는 로직
// 비밀번호가 불일치 -> 회원탈퇴 x
// 비밀번호 일치
// ->
// 로그인이 되어있는 회원을
// 전체회원목록에서 제거
String mpw = client.getMpw(); // 사용자가 입력한 비밀번호
// 현재 로그인한 사람의 비밀번호와 사용자가 입력한 비밀번호를 확인하는 로직
if (!(member.getMpw().equals(mpw))) {
client.printFalse();
continue;
}
if (!(mDAO.delete(member))) {
// 회원 탈퇴 실패
client.printMemberDeleteFalse();
continue;
} else { // 회원 탈퇴 성공
client.printMemberDeleteTrue();
client.printClientEnd02();
break;
}
} else if (action == 4) { // 상품목록출력
ArrayList<ProductVO> pdatas = pDAO.selectAll(null);
client.printProductList(pdatas);
} else if (action == 5) { // 상품목록검색_이름으로 검색
String name = client.getSearchContent();
ProductVO pVO = new ProductVO(0, name, 0, 0);
ArrayList<ProductVO> pdatas = pDAO.selectAll(pVO);
client.printProductList(pdatas);
} else if (action == 6) { // 상품목록검색_가격으로 검색
ProductVO pVO = client.getSearchFilter();
ArrayList<ProductVO> pdatas = pDAO.selectAll(pVO);
client.printProductList(pdatas);
} else if (action == 7) { // 상품검색_최고가 검색
ProductVO pVO = new ProductVO(0, "최고가", 0, 0);
ProductVO data = pDAO.selectOne(pVO);
client.printProduct(data);
}
}
} else if (action == 3) {
client.printClientEnd01();
break;
}
}
}
}
https://github.com/jihyean/Java/tree/main/day19
728x90
반응형
'자바 > 자바 기초' 카테고리의 다른 글
[자바 기초] new 객체 생성과 주소값 (0) | 2023.06.02 |
---|---|
[자바 기초] day20 : 자바로 크롤링 (1) | 2023.05.31 |
[자바 기초] day17 : MVC 패턴(VO 두개 이상) (0) | 2023.05.30 |
[자바 기초] day16 : MVC 패턴(오버라이딩) (0) | 2023.05.30 |
[자바 기초] day15 : MVC 예제(학생부 프로그램) (0) | 2023.05.23 |
Comments