SPRING/Spring MVC 38

[SpringMVC] Session( 세션 )이란?

[SpringMVC] Cookie ( 쿠키 ) 클라이언트가 웹페이지에 접근하려고 한다. 웹페이지는 회원만 접근 가능하므로 서버는 클라이언트 요청에 로그인 페이지로 응답한다. 클라이언트는 ID와 비밀번호를 입력하고 서버로 전송한 lordofkangs.tistory.com 지난 포스팅에서 쿠키(Cookie)를 다루어 보았다. 쿠키는 보안상의 문제가 많다. 언제든 탈취가 가능하기 때문이다. 보안의 문제가 많지만 쿠키는 상태 유지를 위해 필요한 요소이다. 안전한 쿠키 사용을 위해 서버에 세션(Session)이 도입되었다. 세션(Session) 세션의 존재 이유는 안전한 쿠키 사용에 있다. 안전하게 쿠키를 사용하려면 쿠키데이터는 아무도 예측할 수 없는 랜덤한 데이터여야 하고 탈취된 쿠키가 사용될 수 없도록 만료시..

SPRING/Spring MVC 2023.08.30

[SpringMVC] Cookie ( 쿠키 )

클라이언트가 웹페이지에 접근하려고 한다. 웹페이지는 회원만 접근 가능하므로 서버는 클라이언트 요청에 로그인 페이지로 응답한다. 클라이언트는 ID와 비밀번호를 입력하고 서버로 전송한다. 서버는 ID와 비밀번호를 토대로 회원여부를 검사하고 회원이 맞다면 웹페이지 접근을 허용한다. 이것이 '로그인(Log-In)'이다. 그런데 한 가지 문제가 있다. 클라이언트와 서버는 HTTP 프로토콜로 통신한다. HTTP는 상태 비저장(Stateless) 프로토콜이다. 전화 연결처럼 한번 연결되면 상태가 유지되는 것이 아니다. 그저 클라이언트에서 서버로 데이터만 전송되고 모든 연결상태는 사라진다. 그러므로 로그인으로 특정 페이지에 접근해도 다른 페이지로 이동하려면 또 다시 로그인을 해야한다. 그래서 HTTP의 Stateles..

SPRING/Spring MVC 2023.08.30

[SpringMVC] 검증(Validation)(8) - Bean Validation ( 폼객체 )

[SpringMVC] 검증(Validation)(7) - Bean Validation ( groups ) [SpringMVC] 검증(Validation)(5) - Bean Validation [SpringMVC] 검증(Validation)(4) - BindingResult ( @Validated ) [SpringMVC] 검증(Validation)(3) - BindingResult ( rejectValue 메소드 ) [SpringMVC] 요청데이터 검증(Validation)하기(2) - Bindi lordofkangs.tistory.com 지난 포스팅에서 하나의 객체에 서로 다른 유효성 검사가 필요한 경우를 다루어 보았다. Bean Validation은 groups 설정을 제공하여, 하나의 클래스에 서로 ..

SPRING/Spring MVC 2023.08.30

[SpringMVC] 검증(Validation)(7) - Bean Validation ( groups )

[SpringMVC] 검증(Validation)(5) - Bean Validation [SpringMVC] 검증(Validation)(4) - BindingResult ( @Validated ) [SpringMVC] 검증(Validation)(3) - BindingResult ( rejectValue 메소드 ) [SpringMVC] 요청데이터 검증(Validation)하기(2) - BindingResult [SpringMVC] 요청데이터 검증(Validati lordofkangs.tistory.com 지난 포스팅에서 Bean Validation에 대해서 다루어보았다. Bean Validation은 객체에 주입된 데이터를 검증하는 어노테이션 기반 검증 방식이다. 그런데 여기에는 한 가지 문제가 있다. It..

SPRING/Spring MVC 2023.08.30

[SpringMVC] 검증(Validation)(6) - Bean Validation ( 에러 코드 )

[SpringMVC] 검증(Validation)(5) - Bean Validation [SpringMVC] 검증(Validation)(4) - BindingResult ( @Validated ) [SpringMVC] 검증(Validation)(3) - BindingResult ( rejectValue 메소드 ) [SpringMVC] 요청데이터 검증(Validation)하기(2) - BindingResult [SpringMVC] 요청데이터 검증(Validati lordofkangs.tistory.com 지난 포스팅에서 Bean Validation을 다루었다. Bean Validation은 어노테이션 기반으로 유효성 검사를 진행하는 검증 방식이다. 검증 과정에서 발견한 에러는 BindingResult에 담긴..

SPRING/Spring MVC 2023.08.29

[SpringMVC] 검증(Validation)(5) - Bean Validation

[SpringMVC] 검증(Validation)(4) - BindingResult ( @Validated ) [SpringMVC] 검증(Validation)(3) - BindingResult ( rejectValue 메소드 ) [SpringMVC] 요청데이터 검증(Validation)하기(2) - BindingResult [SpringMVC] 요청데이터 검증(Validation)하기(1) 클라이언트로부터 요청(Request)이 들어 lordofkangs.tistory.com 지난 포스팅에서는 @Validated 어노테이션으로 검증을 구현해보았다. 유효성 검사를 위해, Validator 인터페이스 구현체를 만들고 검증 로직도 작성하였다. 그러나 대부분의 검증 로직은 비슷한 경우가 많다. 빈값인가? Null..

SPRING/Spring MVC 2023.08.29

[SpringMVC] 검증(Validation)(4) - BindingResult ( @Validated )

[SpringMVC] 검증(Validation)(3) - BindingResult ( rejectValue 메소드 ) [SpringMVC] 요청데이터 검증(Validation)하기(2) - BindingResult [SpringMVC] 요청데이터 검증(Validation)하기(1) 클라이언트로부터 요청(Request)이 들어오면, 요청 데이터는 가장 먼저 Controller에 도착한다. 그러 lordofkangs.tistory.com 지난 포스팅에서 BindingResult의 rejectValue 메소드로 코드를 단순화 해보았다. Controller @PostMapping("/add") public String addItem(@ModelAttribute Item item, BindingResult bin..

SPRING/Spring MVC 2023.08.28

[SpringMVC] 검증(Validation)(3) - BindingResult ( rejectValue 메소드 )

[SpringMVC] 요청데이터 검증(Validation)하기(2) - BindingResult [SpringMVC] 요청데이터 검증(Validation)하기(1) 클라이언트로부터 요청(Request)이 들어오면, 요청 데이터는 가장 먼저 Controller에 도착한다. 그러므로 Controller에서 적합한 데이터인지 검사해야 한다. 적 lordofkangs.tistory.com 지난 포스팅에서 BindingResult를 다루어 보았다. BindingResult는 오류 메시지를 담는 그릇으로, FieldError와 ObjectError에 담긴 에러 메시지를 저장한다. 그러나 개발자가 FieldError와 ObjectError를 직접 생성하면 코드가 복잡해지고 길어진다. 그래서 BindingResult는..

SPRING/Spring MVC 2023.08.28

[SpringMVC] 검증(Validation)(2) - BindingResult ( FieldError )

[SpringMVC] 요청데이터 검증(Validation)하기(1) 클라이언트로부터 요청(Request)이 들어오면, 요청 데이터는 가장 먼저 Controller에 도착한다. 그러므로 Controller에서 적합한 데이터인지 검사해야 한다. 적합하지 않은 데이터가 서버 내부로직으로 lordofkangs.tistory.com 지난 포스팅에서 HashMap으로 요청데이터 검증을 구현해보았다. 이번 포스팅에서는 Spring에서 제공하는 BindingResult 객체를 이용하여 요청데이터 검증을 구현해 보겠다. BindingResult 객체는 오류 메시지를 담는 그릇이라고 보면 된다. HashMap 자료구조에 오류 메시지를 담으면 Controller 외부에서 발생하는 오류를 핸들링하지 못한다. BindingRe..

SPRING/Spring MVC 2023.08.28

[SpringMVC] 검증(Validation)(1) - HashMap

클라이언트로부터 요청(Request)이 들어오면, 요청 데이터는 가장 먼저 Controller에 도착한다. 그러므로 Controller에서 적합한 데이터인지 검사해야 한다. 적합하지 않은 데이터가 서버 내부로직으로 들어오는 것을 방지하기 위해서다. 실무에서는 주로 Bean Validation을 사용한다. 요청이 들어오면 요청에 맞는 DTO 객체에 요청데이터가 담긴다. DTO 필드에는 @NotNull, @NotEmpty 같은 어노테이션이 선언되어 있는데, BeanValidator는 선언되어 있는 어노테이션을 토대로 필드에 담긴 데이터를 검증한다. 그리고 검증결과를 Controller에 넘긴다. Controller는 검증결과에 따라 클라이언트에 적절히 응답하면 된다. 실무에서는 주로 이런 방식으로 요청데이터..

SPRING/Spring MVC 2023.08.22