-
java eclipse에서 gson을 이용한 json으로 회원관리java공부 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; }
앞으로 필요한 것은
회원가입시 비밀번호의 필수 구성요소들을 고지하고 확인하는게 필요한 것 같다.
그리고
로그인 후에 어떤 내용을 넣을지 고민해 봐야겠다.
'java공부' 카테고리의 다른 글
java/자바 Collection Stack구조(후입선출), Queue구조(선입선출) (0) 2021.08.15 java/자바 equals 사용하여 동등성 비교 (0) 2021.08.15 자바/java try{} catch(){}와 Exception을 활용한 반복문 작성 (0) 2021.08.08 자바/java Math.abs(); 절대 값 활용(다이아 만들기) (0) 2021.07.25 자바/java method 이용과 활용 (0) 2021.07.25