java공부
java eclipse에서 gson을 이용한 json으로 회원관리
이쟤키
2021. 9. 11. 14:37
반응형
회원관리를 IO를 이용해서 하는데 저장되는 방식이 영 맘에 들지 않아서 고민하고있었는데
json이라는 자바스크립트 방식의 데이터 저장방식을 보게 되었다.
한눈에 어떤 내용인지 보기 쉽게 정리되어 저장할 수 있어서 이 방법을 사용하게 되었다.
알아보니 java에서 사용하기 위해서는 gson을 이용해서 json을 이용할 수 있다고 한다.
https://mvnrepository.com/artifact/com.google.code.gson/gson
위 링크에서 gson을 버전별로 다운로드 할 수 있다.
다운로드 한 파일을 위처럼
진행하는 자바 프로젝트를 오른쪽 클릭해서 설정에 들어간 뒤
Java Build Path 항목의 Libraries의 Classpath에 넣어주면 이제 사용 할 수 있다.
회원관리 패키지 구조는 크게
Run, View, Member 이렇게 구성했다.
Run에서는 실행만 할 수 있도록 했다.
View에서는 눈에보이는 메뉴들을 모아 놓았다.
Member에는 IO뿐 아니라 VO그리고 여러 클래스를 넣어 관리했다.
특히
gson을 사용하여 데이터를 오가게 했는데
public class MemberIO {
// 저장할 주소를 final로 묶음
private final static String FILE_PATH = "files/member.json";
// 데이터를 일단 ArrayList를 이용하여 저장하기 위해 선언
ArrayList<Member> listMember = new ArrayList<>();
public void writeJson(ArrayList<Member> list) {
// 문자기반스트림 FileWriter를 사용
FileWriter fw = null;
// GsonBuilder를 이용해서 gson생성, setPrettyPrinting으로 예쁘게 출력
Gson gson = new GsonBuilder().setPrettyPrinting().create();
try {
fw = new FileWriter(FILE_PATH);
gson.toJson(list, fw);
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
fw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
public ArrayList<Member> readJson() {
JsonReader reader = null;
try {
Gson gson = new GsonBuilder().setPrettyPrinting().create();
reader = new JsonReader(new FileReader(FILE_PATH));
// json데이터를 Member[]로 변환
Member[] m = new Gson().fromJson(reader, Member[].class);
// Memeber배열을 Arraylist로 넣어줌
listMember.addAll(Arrays.asList(m));
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
reader.close();
} catch (IOException e) {
e.printStackTrace();
}
}
// ArrayList를 리턴
return listMember;
}
}
이런식으로 구성했고
회원 가입시 데이터를 넣고 뺄때
ArrayList로 계속 입출입하며 관리한다.
// 회원가입
public boolean joinMember(Member member) {
// 저장된 전체 맴버정보를 가져옴
list = memberIO.readJson();
boolean bool = false;
try {
// 새로 추가된 맴버를 추가
list.add(member);
bool = true;
} catch(NullPointerException e) {
e.printStackTrace();
}
// 새로운 맴버정보가 추가된 전체정보를 새로 저장
if(bool) {
memberIO.writeJson(list);
}
return bool;
}
// 아이디가 중복되었는지 비교
public boolean compareId(Member id) {
boolean bool = true;
// 전체 맴버정보를 받아옴
list = memberIO.readJson();
// for문을 돌려서 아이디가 중복되었는지 확인
for(int i = 0; i < list.size(); i++) {
if(id.getId().equals(list.get(i).getId())) {
bool = false;
}
}
return bool;
}
// 로그인시 아이디 비번이 존재하는지 확인
public boolean compareIdPwForLogin(Member login) {
boolean bool = false;
list = memberIO.readJson();
for(int i = 0; i < list.size(); i++) {
if(login.getId().equals(list.get(i).getId()) && login.getPw().equals(list.get(i).getPw())) {
bool = true;
}
}
return bool;
}
앞으로 필요한 것은
회원가입시 비밀번호의 필수 구성요소들을 고지하고 확인하는게 필요한 것 같다.
그리고
로그인 후에 어떤 내용을 넣을지 고민해 봐야겠다.