분류 전체보기
-
Optional공부/기본 2023. 11. 21. 10:18
- java 8 부터 도입된 클래스 - null을 직접 다루는 것보다 안전하게 객체의 존재 또는 부재를 표현할 수 있게 해줌 - optional 객체는 특정 타입의 객체를 포장하여 해당 객체가 null일 수도 있음을 명시적으로 나타낸다 ex) Optional user = getUserById(id); if (user.isPresent()) { System.out.println(user.get().getName()); } else { System.out.println("User not found"); } // or if (!user.isPresent()) { throw new EntityNotFoundException("userId에 해당하는 유저가 없습니다."); } // 이후 로직 // 또는 Strin..
-
회원가입 SHA-256공부/기본 2023. 11. 20. 11:59
SHA-256 - 64자리의 문자열을 반환 - 단방향 암호화 : 암호화된 문자열을 다시 원래의 문자열로 복호화할 수 없는 방법 - 입력값이 조그만 달라지더라도 변환되는 값이 완전히 달라지기때문에 변환값을 토대로 입력값을 유추하는 것은 거의 불가능 import javax.xml.bind.DatatypeConverter; import java.nio.charset.StandardCharsets; import java.security.MessageDigest; class Main { public static void main(String[] args) throws Exception { String password = "SHA-256"; MessageDigest md = MessageDigest.getInsta..
-
정적 팩토리 메서드카테고리 없음 2023. 11. 20. 09:40
- 객체 생성을 캡슐화하는 디자인 패턴 - 이 메서드는 객체를 생성하는 로직을 감추고 클라이언트가 직접 객체를 생성하는 대신 메서드를 호출하여 객체를 얻는 방식을 사용 - 명확한 이름을 가질 수 있다 : 생성자는 클래스 이름을 따르지만 정적 팩토리 메서드는 명확한 이름을 가질 수 있다 ex) public class Main { public static void main(String[] args) { BigInteger prime = BigInteger.probablePrime(100, new Random()); System.out.println(prime); } } - 100 비트 길이의 확률적 소수를 생성하고 출력 - 호출할 때마다 새로운 객체를 생성하지 않아도 된다 : 정적 팩토리 메서드는 필요에 따..
-
Spring MVC 아키텍처공부/기본 2023. 11. 20. 08:37
- modle : db와 상호작용하며 비즈니스 로직을 처리하는 모듈 - view : client에게 보여지는 결과화면을 반환하는 모듈 - controller : client 요청이 들어왔을 때 그 입력을 처리하고 어떤 로직을 실행시킬 것인지 제어하는 모듈 model1, model2 의 차이점 - 클라이언트의 요청 사항을 모듈화, 하나의 파일로 처리할 것인지 model1 - was에서 모든 파일에 클라이언트가 요청한 로직을 처리하는경우 - jsp에서 view, controller의 역할을 담당하며 그 결과를 클라이언트에게 반환한다 - 아키텍처 간단, jsp에 거의 모든 로직을 집어넣기 때문에 작은 웹 어플리케이션을 제작할 때에는 무리 없지만 대규모는 유지보수 힘듬 model2 - model1을 보완한 아키..
-
JWT 토큰공부/기본 2023. 11. 17. 15:21
- 웹에서 사용되는 json 형식의 토큰에 대한 표준 규격 - 사용자의 인증과 인가 정보를 서버와 클라이언트간에 안전하게 주고 받기 위해서 사용 - 보통 Authorization HTTP헤더를 Bearer 의 형태로 설정하여 클라이언트에서 서버로 전송 - 서버에서는 토큰에 포함되어 있는 서명 정보를통해 위변조 여부를 검증 - Base64로 인코딩 = 육안으로 보면 eyJ로 시작하는 아주 긴 문자열 - 온라인 디버거를 통해 어렵지 않게 실제로 저장되어 있는 내용을 json 형태로 디코딩하여 확인해볼 수 있다 JWT 구조 하나의 JWT 토큰은 헤더, 페이로드, 서명 헤더 : 토큰의 유형, 서명 알고리즘에 명시 페이로드 : 소위 claim이라고 불리는 사용자의 인증/인가 정보 서명 : 헤더와 페이로드가 비밀키..
-
java 에러_(03)공부/기본 2023. 11. 17. 09:46
- 던지기 public void throwException() throws Exception { throw new Exception("This is an error message."); } - Exception 객체 생성해서 throw키워드에 던지고 있다 - throws exception 부분은 이 메소드가 exception 던질 수 있음을 나타냄 - 잡기 public void catchException() { try { throwException(); } catch (Exception e) { System.out.println("Caught an exception: " + e.getMessage()); } } - try-catch 블록을 사용해서 예외를 잡고있다 - try 블록 안에서 throwExce..