본문 바로가기

전체 글85

[WEB] HTTP 상태코드 HTTP 상태 코드란? 클라이언트가 보낸 요청에 대한 처리 상태를 응답에서 알려주는 코드로 5개그룹으로 나누어져 있다. 만일 신규코드일 경우 그룹의 첫번째 숫자로 판단하기 때문에 그룹의 대표 숫자를 잘 유지해야 한다. 처리결과에 따라 올바른 상태코드를 응답해야 클라이언트가 신뢰하고 사용할 수 있기 때문에 상태 코드를 파악하고 있는 것이 중요하다. 대표적인 상태코드 1xx(Information) 임시적인 응답으로 요청을 받았고 작업을 진행 중임을 알리는 코드로 HTTP 1.0에서 지원하지 않는다. 100 - Continue 진행 중임을 의미하는 응답코드로 클라이언트가 계속해서 요청을 하거나 이미 요청을 완료한 경우에는 무시해도 됨을 알리는 코드 2xx(Successful) 클라이언트의 요청을 성공적으로 처.. 2022. 8. 7.
[SPRING] HttpServletRequest InputStream의 주의사항 Filter에서 요청정보에 대한 로그를 출력하기 위한 작업을 한 후 컨트롤러에서 데이터 매핑이 안 되는 현상이 발생했다. 확인 결과 HttpServletRequest의 InputStream을 읽은 게 화근이었다. 스프링의 컨버터가 요청 Body의 데이터를 읽을 수 없으니 데이터 매핑이 될 수가 없는 것이었다. 사실상 유실이라고 봐야겠다 HttpServletRequest의 InputStream은 한 번 읽으면 다시 읽을수 없다고 한다 - 톰캣의 정책 ServletInputStream inputStream = request.getInputStream(); String messageBody = StreamUtils.copyToString(inputStream, StandardCharsets.UTF_8); Ht.. 2022. 8. 1.
[JAVA] Optional 사용법 - 어떻게 사용해야할까 (2/2) Optional의 존재를 알고 이리저리 사용하면서 여러 의문이 들었다. null의 가능성이 있는 곳엔 모두 써줘야 하는 건가? 결국 꺼낼때는 존재 여부를 확인하고 꺼내야 하는데 이럴 거면 Optional을 왜 쓰는가.. 등의 의문이 들어 Optional의 올바른 사용방법에 대해 알아보았습니다. 잘못된 Optional 사용 Optional은 null을 반환하면 에러를 유발할 가능성이 높은 상황에서 '결과 없음'을 명확하게 드러내기 위해 메서드 반환타입으로 사용되도록 매우 제한적으로 설계되었다고 한다. 즉 의도와 맞지않게 사용한다면 부작용이 발생할 수 있다. NullPointerException을 피하려다 NoSuchElementException이 발생 코드의 가독성이 떨어지는 문제 비용 증가로 인한 성능 .. 2022. 7. 28.
[JAVA] Optional의 사용법 (1/2) 코드 작성할 때 흔히 만날 수 있는 예외 중 NullPointerException가 있다. 예외 방지를 위해 조건문을 사용하고 예외를 발생시키는 등의 처리를 하지만 처리를 잊을수 있고 null을 리턴한다는 사실이 문제가 된다. 자바 8에서 null일 가능성이 있는 데이터를 감싸는 Wrapper 클래스인 Optional을 제공한다. 이를 사용해 클라이언트에게 반환 값이 '없음'을 명백하게 표현이 가능하다. Optional 생성 Opional 클래스는 간편하게 객체 생성을 하도록 3가지의 정적 팩토리 메소드를 제공합니다. Optional.of() 데이터가 null이 아닐때 사용 가능하다 만약 null일 경우 NullPointerException이 발생한다. public Optional getNickName(.. 2022. 7. 25.
[SPRING] 쿠키활용법 주로 브라우저에 저장해도 보안상 문제가 없는 데이터를 쿠키를 통해 사용하는데 스프링에서 쿠키를 생성하고 조회하는 방법에 대해 학습한 내용을 정리합니다. 쿠키종류 쿠키는 생성할 때 만료 날짜 입력 여부에 따라 속성이 달라지는데 만료 날짜가 없다면 세션쿠키로 브라우저 종료 시 삭제된다. 만료날짜가 있다면 영속 쿠키로 만료 날짜까지 유지된다. 쿠키생성 @GetMapping("/cookie") public String createCookie(HttpServletResponse response) { Cookie cookie = new Cookie("cookieName", LocalDateTime.now().toString()); // 쿠키의 key, value 입력 cookie.setMaxAge(120); // .. 2022. 7. 21.
[SPRING] Bean Validation 직접 조건을 확인하여 validation 처리하는 것이 아닌 필드에 조건을 명시하고 조건에 부합됐을 때 오류 메세지를 생성하고 바인딩까지 처리까지 해준다면 더욱 편리할 것이다. Bean Validation은 애노테이션 기반으로 검증을 매우 편하게 할 수 있도록 한다. 학습의 결과를 정리합니다. Project Metadata project : Gradle Project Language : Java 11 Framework : Spring Boot 2.5.x Template Engine : Thymeleaf 의존성 추가 implementation 'org.springframework.boot:spring-boot-starter-validation' spring-boot-starter-validation 의존관.. 2022. 7. 10.