사이먼's 코딩노트
[Java] 게시판 제작(7) 본문
[게시판 제작 ~ing]
- 작성된 모든 코드는 저의 깃허브 리포지터리에서 확인하실 수 있습니다.
- 리포지터리 주소 URL : https://github.com/psm817/full_stack_proj_2024_03
[회원가입 기능 추가]
- 다음은 "member join" 이라는 명령어를 통해 회원가입 기능을 추가해봅시다.
- 회원가입 기능은 아이디 중복확인, 비밀번호 확인 기능이 포함되도록 구현해봅시다.
class Mem {
int id;
String regDate;
String loginId;
String loginPw;
String name;
public Mem(int id, String regDate, String loginId, String loginPw, String name) {
this.id = id;
this.regDate = regDate;
this.loginId = loginId;
this.loginPw = loginPw;
this.name = name;
}
}
- 회원가입에 필요한 정보는 ID, 최초등록날짜, PW, 확인용PW, 회원이름이 있고 위 코드는 Mem 클래스를 추가하여 해당 정보를 관리한다.
public class Main {
private static List<Article> articles;
private static List<Mem> members;
static {
articles = new ArrayList<>();
members = new ArrayList<>();
}
- 그 다음 위 코드와 같이 등록된 회원의 정보를 저장한 리스트를 생성한다.
else if(cmd.equals("member join")) {
int id = members.size() + 1;
String regDate = Util.getNowDateStr();
String loginId = null;
String loginPw = null;
String loginPwConfirm = null;
while(true) {
System.out.printf("로그인 아이디 : ");
loginId = scanner.nextLine();
if(inJoinableLoginId(loginId) == false) {
System.out.printf("%s(은)는 이미 사용중인 아이디 입니다.\n", loginId);
continue;
}
break;
}
while(true) {
System.out.printf("로그인 비밀번호 : ");
loginPw = scanner.nextLine();
System.out.printf("비밀번호 확인 : ");
loginPwConfirm = scanner.nextLine();
if(loginPw.equals(loginPwConfirm) == false) {
System.out.println("비밀번호를 다시 입력해주세요");
continue;
}
break;
}
System.out.printf("이름 : ");
String name = scanner.nextLine();
Mem member = new Mem(id, regDate, loginId, loginPw, name);
members.add(member);
System.out.printf("%d번 회원이 가입되었습니다.\n", id);
}
- "article write" 명령어와 유사하게 출력문과 스캐너를 이용해서 회원 정보를 저장한다.
- 통상적으로 회원 가입은 회원 등록하는 사용자가 비밀번호를 입력하고 비밀번호를 한번 더 입력해서 일치한지 확인하고 가입 승인을 내준다.
- 위 코드에서도 마찬가지로 무한 루프와 조건문을 통해 기능을 구현할 수 있다.
- 고유 번호가 같은 지 비교할 때는 자료형 타입이 int여서 단순히 == 을 이용해서 숫자를 비교할 수 있었지만, 비밀번호는 자료형 타입이 String 이기 때문에 equals를 이용해서 비교를 한다.
- 만약 확인용 비밀번호가 일치하지 않는다면 비밀번호가 일치하지 않는다는 출력문과 함께 비밀번호를 다시 입력하도록 하고 일치하면 해당 무한루프를 종료하게 된다.
- 이와 같은 방식으로 아이디 중복확인 기능도 구현할 수 있다.
- 다만 아이디 중복 확인은 사용자가 따로 확인용 아이디를 입력하지 않기 때문에 false를 체크하는 메서드를 하나 만들어줘야한다.
private static boolean inJoinableLoginId(String loginId) {
int index = getMemberIndexByLoginId(loginId);
if(index == -1) {
return true;
}
return false;
}
private static int getMemberIndexByLoginId(String loginId) {
int i = 0;
for(Mem member : members) {
if(member.loginId.equals(loginId)) {
return i;
}
i++;
}
return -1;
}
- 아이디 중복 검사를 위해서 inJoinableLoginId() 라는 메서드를 선언했고 해당 메서드는 다음과 같이 정의할 수 있다.
- index라는 변수를 만들어서 getMemberIndexByLoginId() 라는 메서드를 통해 인덱스 값을 구한다.
- getMemberIndexByLoginId() 메서드는 members에 저장된 회원 정보를 반복문을 통해 하나씩 loginId와 사용자가 입력한 loginId가 일치한지 equals를 통해 비교하고 일치하면 해당 리스트 번호를 return 해주고 그렇지 않으면 -1을 return 한다.
- 이 때 return 된 인덱스의 숫자가 -1이면 중복되는 아이디가 없다는 뜻이기 때문에 Main 메서드에 참을 반환한다.
- 현재까지 작성된 코드를 실행하면 다음과 같이 게시판이 동작한다.
반응형
'프로젝트 > [Java] 게시판 제작' 카테고리의 다른 글
[Java] 게시판 제작(9) (0) | 2024.03.04 |
---|---|
[Java] 게시판 제작(8) (0) | 2024.03.04 |
[Java] 게시판 제작(6) (0) | 2024.02.23 |
[Java] 게시판 제작(5) (0) | 2024.02.22 |
[Java] 게시판 제작(4) (0) | 2024.02.21 |