57일차 수업정리(회원 가입 관련 Tip)
**데이터 삽입
=> 삽입 요청 -> Controller -> ServiceImpl -> DAO -> Repository -> DAO -> Service -> Controller -> View
=> 웹에서는 ajax로 요청
**파일 업로드
=> 요청을 처리하는 Servlet 클래스 상단에 아래 어노테이션을 추가
- @MultipartConfig(location="파일을 업로드 할 디렉토리 경로를 절대경로로 작성")
=> 요청을 처리하는 서비스 클래스에 작성
- 파라미터를 읽을 때 getParameter 대신에 getPart("파라미터명")을 이용하여 Part객체를 생성
- Part 객체의 getHeader("content-dispotision"을 호출해서 업로드된 파일명을 찾아야 함
- 메소드 호출시 form-data;파라미터명;파일명의 형태
- File 객체를 만들고 Part 객체의 write메소드를 이요하여 업로드를 수행
- 파일을 하나의 디렉토리에 전부 업로드하려면 파일명을 유일무리하게 만들어야 함
-> UUID 클래스의 randomUUID메소드를 호출하여 랜덤한 파일명을 만듬
**회원가입 요청 디버깅
1. 자바 스크립트 코드에 에러가 있는지 확인
2. UserController 클래스에서 요청을 제대로 해결했는지 확인
**데이터 암호화
=> 최근에는 개인 정보를 함부로 노출하면 안됨
- 데이터를 저장할 때 바로 알아볼수 없도록 저장하는 것을 권장
- 암호화 후, 복호화가 가능하도록 저장하거나, 암호화 후, 복호화는 안되고, 비교만 가능하게 하는 방법도 있음
- 비밀번호는 뒤의 방법을 선택하고 일반 데이터는 앞의 방법을 선택
=> jBCrypt : 복호화가 불가능하도록 해주는 라이브러리
- Bcrypt.hashpw(문자열, BCrypt.gensalt()) : 메소드를 호출하면 암호화된 문자열을 리턴
- BCrypt.checkpw(원본 문자열, 암호화된 문자열) : 2개가 일치하면 true, 일치하지 않으면 false를 리턴