본문 바로가기

코딩 공부/Java

MVC Pattern

MVC Pattern 

Main : 입력받기

MemverDTO : 데이터 접근

interface MemberDAO : 데이터 관리

interface MemberService : 값들을 검증, 처리

 

파일 트리

 

disassemble.DTO

  • MemberDTO.java
  • IMemberDTO.java
  • RequestRequest.java
  • IRequestRequest.java

disassemble.DAO

  • MemberDAO.java
  • IMemberDAO.java

disassemble.Solution.Service

  • MemberRegisterService.java
  • ChangePasswordService.java
  • MemberDeleteService.java
  • MemberAllService.java

 

disassemble.main

//Main.java

package disassemble_Solution.main;
import java.util.Scanner;
import disassemble_Solution.DAO.MemberDAO;
import disassemble_Solution.DTO.RegisterRequest;
import disassemble_Solution.Service.ChangePasswordService;
import disassemble_Solution.Service.MemberAllService;
import disassemble_Solution.Service.MemberDeleteService;
import disassemble_Solution.Service.MemberRegisterService;
public class Main {
	private static MemberDAO memberDao = new MemberDAO();
	
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(true){
			System.out.println("명령어를 입력하세요");
			System.out.print("> ");
			String command = sc.nextLine();
			if(command.equalsIgnoreCase("exit")){
				System.out.println("종료합니다.");
				break;
			}
			if(command.startsWith("new")){
				processNewCommand(command.split(" "));
				continue;
			} else if(command.startsWith("change")){
				processChangeCommand(command.split(" "));
				continue;
			} else if(command.startsWith("all")) {
				processAllCommand();
				continue;
			} else if(command.startsWith("delete")) {
				processDeleteCommand(command.split(" "));
				continue;
			}
			
			printHelp();
		}
	}
	private static void processNewCommand(String[] arg) {
		if(arg.length != 5){
			printHelp();
			return;
		}
		MemberRegisterService regSvc = new MemberRegisterService(memberDao);
		RegisterRequest req = new RegisterRequest();
		req.setEmail(arg[1]);
		req.setName(arg[2]);
		req.setPassword(arg[3]);
		req.setConfirmPassword(arg[4]);
		
		regSvc.regist(req);
	}
	
	private static void processAllCommand() {
		MemberAllService allSvc=new MemberAllService(memberDao);
		allSvc.selectAll();
		// MemberAllService 객체 생성
		// allSvc.selectAll() 호출
	}
	private static void processChangeCommand(String[] arg) {
		if(arg.length != 4) {
			printHelp();
			return;
		}
		 ChangePasswordService change = new ChangePasswordService(memberDao);
		 change.changePassword(arg[1], arg[2], arg[3]);
		// ChangePasswordService 객체 생성
		// change.changePassword() 호출
	}
	private static void processDeleteCommand(String[] arg) {
		if(arg.length != 4) {
			printHelp();
			return ;
		}
		MemberDeleteService delete = new MemberDeleteService(memberDao);
		delete.checkPassword(arg[1], arg[2], arg[3]);
		// MemberDeleteService 객체 생성
		// delete.checkPassword() 호출
	}
	private static void printHelp(){
		System.out.println();
		System.out.println("명령어 사용법을 확인하세요.");
		System.out.println("usage : ");
		System.out.println("모든 정보 출력 : all");
		System.out.println("정보 등록 : new [이메일] [이름] [암호] [암호확인]");
		System.out.println("비밀번호 수정 : change [이메일] [현재비밀번호] [변경할비밀번호]");
		System.out.println("정보 삭제 : delete [이메일] [암호] [암호확인]");
		System.out.println("종료 : exit");
		System.out.println();
	}
}

//====================================================================================
//MemberRegisterService.java
package disassemble_Solution.Service;
import java.text.SimpleDateFormat;
import java.util.*;
import disassemble_Solution.DAO.MemberDAO;
import disassemble_Solution.DTO.MemberDTO;
import disassemble_Solution.DTO.RegisterRequest;
public class MemberRegisterService {
	private MemberDAO memberDao;
	
	public MemberRegisterService(MemberDAO memberDao) {
		this.memberDao = memberDao;
	}
	public void regist(RegisterRequest req) {
		
		if(!req.getPassword().equals(req.getConfirmPassword())) {
			System.out.println("비밀번호가 다릅니다");
			return;
		}
		MemberDTO check = memberDao.selectEmail(req.getEmail());
		if(check != null) {
			System.out.println(req.getEmail()+"는 등록된 이메일입니다.");
			return;
		}else {
			MemberDTO member = new MemberDTO();
			member.setEmail(req.getEmail());
			member.setName(req.getName());
			member.setPassword(req.getPassword());
			
			Date date = new Date();
			SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
			String regDate = sdf.format(date);
			member.setRegisterDate(regDate);
			
			memberDao.insert(member);
			System.out.println("등록되었습니다");
			
		}
		
		// password == confirmPassword
		// email로 계정 등록 여부 확인
		// memberDao.insert() 계정 등록
	}
}

//====================================================================================
//ChangePasswordService.java
package disassemble_Solution.Service;
import disassemble_Solution.DAO.MemberDAO;
import disassemble_Solution.DTO.MemberDTO;
public class ChangePasswordService {
	private MemberDAO memberDao;
	
	public ChangePasswordService(MemberDAO memberDao) {
	this.memberDao=memberDao;
	}
	public void changePassword(String email, String oldPw, String newPw) {
		// 이메일 등록여부 확인.
		MemberDTO member = memberDao.selectEmail(email);
		if(member == null) {
			System.out.println(email+"는/은 등록되지 않았습니다");
		}else {
			if(member.getPassword().equals(oldPw)==false){
				System.out.println("비밀번호가 일치하지않습니다");
				
			}else {
				member.setPassword(newPw);
				memberDao.update(member);
				System.out.println("변경되었습니다");
			}
		}
		// 패스워드 확인 및 MemberDAO.update() 호출
	}
}

//====================================================================================
//MemberDeleteService.java
package disassemble_Solution.Service;
import disassemble_Solution.DAO.MemberDAO;
import disassemble_Solution.DTO.MemberDTO;
public class MemberDeleteService {
	private MemberDAO memberDao;
	public MemberDeleteService(MemberDAO memberDao) {
		this.memberDao=memberDao;
	}
	public void checkPassword(String email, String password, String confirmPassword) {
		if(password !=null&&password.equals(confirmPassword)==false) {
			System.out.println("비밀번호가 서로 다릅니다.");
			return;
		}
		MemberDTO member = memberDao.selectEmail(email);
		if(member==null) {
			System.out.println(email+"은/는 등록되지 않았습니다");
		}else {
			if(password.equals(member.getPassword())==false) {
				System.out.println("저장된 비밀번호와 일치하지 않습니다.");
			}else{memberDao.delete(email);
			System.out.println("삭제되었습니다");
			}
		}
		// 패스워드 확인
		// MemberDAO 객체 내 selectEmail() 메소드를 호출
		// 저장된 회원 정보와 입력된 회원 정보 검증
		// MemberDAO 객체 내 delete() 호출
	}
}

//====================================================================================
//MemberAllService.java
package disassemble_Solution.Service;
import java.util.Collection;
import disassemble_Solution.DAO.MemberDAO;
import disassemble_Solution.DTO.MemberDTO;
public class MemberAllService {
	private MemberDAO memberDao;
	
	public MemberAllService(MemberDAO memberDao){
		this.memberDao=memberDao;
	}
	
	public void selectAll() {
		
		
		Collection<MemberDTO> members = memberDao.selectAll();
		System.out.println("이메일\t이름\t비밀번호\t가입일");
		if(members.isEmpty()==false) {
			for(MemberDTO member : members) {
				System.out.print(member.getEmail()+"\t");
				System.out.print(member.getName()+"\t");
				System.out.print(member.getPassword()+"\t");
				System.out.println(member.getRegisterDate());
		}
		
		}else System.out.println("등록 후 이용하세요");
		
		// MemberDAO 객체 내부 selectAll() 호출 후 회원 모든 정보 출력
	}
}

//====================================================================================
//MemberDAO.java
package disassemble_Solution.DAO;
import java.util.*;
import disassemble_Solution.DTO.MemberDTO;
public class MemberDAO implements IMemberDAO {
	private HashMap<String,MemberDTO> members = new HashMap<>();
	@Override
	public Collection<MemberDTO> selectAll() {
		
		return members.values();//값들을 반환한다
	}
	@Override
	public MemberDTO selectEmail(String email) {
		return members.get(email);
		
	}
	@Override
	public void insert(MemberDTO member) {
		members.put(member.getEmail(),member);
	}
	@Override
	public void update(MemberDTO member) {
		members.put(member.getEmail(),member);
		
	}
	@Override
	public void delete(String email) {
		members.remove(email);
	}
	
}

//====================================================================================
//IMemberDAO.java
package disassemble_Solution.DAO;
import java.util.Collection;
import disassemble_Solution.DTO.MemberDTO;
public interface IMemberDAO {
	public Collection<MemberDTO> selectAll() ;
	public MemberDTO selectEmail(String email);
	public void insert(MemberDTO member);
	public void update(MemberDTO member);
	public void delete(String email);
}

//====================================================================================
//RequestRequest.java
package disassemble_Solution.DTO;
public class RegisterRequest implements IRegisterRequest{
	String name,email,password,confirmPassword;
	public String getName() {
		return name;
	}
	public void setName(String name) {
		this.name = name;
	}
	public String getEmail() {
		return email;
	}
	public void setEmail(String email) {
		this.email = email;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getConfirmPassword() {
		return confirmPassword;
	}
	public void setConfirmPassword(String confirmPassword) {
		this.confirmPassword = confirmPassword;
	}
}

//====================================================================================
//IRequestRequest.java
package disassemble_Solution.DTO;
public interface IRegisterRequest {
	public String getEmail();
	public String getName() ;
	public String getPassword();
	public String getConfirmPassword();
	
	public void setPassword(String password);
	public void setEmail(String email);
	public void setName(String name);
	public void setConfirmPassword(String confirmPassword);
}

//====================================================================================
//MemberDTO.java
package disassemble_Solution.DTO;
public class MemberDTO implements IMemberDTO {
	private String email;
	private String name;
	private String password;
	private String registerDate;
	public String getEmail() {
	return email;
		}
	public void setEmail(String email) {
		this.email = email;
		}
	public String getName() {
		return name;
		}
	public void setName(String name) {
		this.name = name;
	}
	public String getPassword() {
		return password;
	}
	public void setPassword(String password) {
		this.password = password;
	}
	public String getRegisterDate() {
		return registerDate;
	}
	public void setRegisterDate(String registerDate) {
		this.registerDate = registerDate;
	}
}

//====================================================================================
//IMemberDTO.java
package disassemble_Solution.DTO;
public interface IMemberDTO {
	public void setEmail(String email);
	public void setPassword(String password);
	public void setName(String name);
	public void setRegisterDate(String registerDate);
	public String getEmail();
	public String getPassword();
	public String getName();
	public String getRegisterDate();
}

'코딩 공부 > Java' 카테고리의 다른 글

상속  (0) 2022.08.24
생성자  (0) 2022.08.23
클래스  (0) 2022.08.22
HashMap  (0) 2022.08.21
Hash Set  (0) 2022.08.20