Spring/Spring MVC
-
[Spring MVC] 로그인 처리 - 쿠키, 세션Spring/Spring MVC 2021. 7. 20. 13:14
v1 SessionManager 객체 사용 로그인 : SessionManager 클래스 객체를 생성하여 세션 생성하여 저장하고 쿠키 전달 sessionManager.createSession(loginMember, response); 로그아웃 : 세션저장소에서 세션 삭제 sessionManager.expire(request); v2 HttpSession 객체 사용 로그인 : HttpSession 객체를 생성하여 세션 저장하고 쿠키 전달 HttpSession session = request.getSession(); session.setAttribute(SessionConst.LOGIN_MEMBER, loginMember); 로그아웃 : 세션 삭제 session.invalidate(); v3 @SessionA..
-
[Spring MVC] 검증 - Bean ValidationSpring/Spring MVC 2021. 7. 18. 14:58
대부분의 검증 로직은 매우 일반적인 경우가 많다 따라서 이러한 검증 기술들을 모든 프로젝트에 적용할 수 있게 공통화하고 표준화 한 것이 바로 Bean Validation이다 이러한 Bean Validation을 사용하려면 spring-boot-starter-validation 의존관계를 추가해야 한다 의존관계를 추가하면 스프링 부트는 자동으로 글로벌 Validator(LocalValidatorFactoryBean)를 등록한다 검증 순서 1. @ModelAttribute 각각의 필드에 타입 변환을 시도한다 1.1 실패할 경우 - typeMismatch FieldError를 BindingResult에 추가한다 2. 글로벌 Validator 실행 BeanValidation 메시지 찾는 순서 1. Message..
-
[Spring MVC] 검증 - Spring 순수 ValidationSpring/Spring MVC 2021. 7. 18. 13:59
Validation V1 입력값 에러를 처리하기 위해 컨트롤러에 검증로직을 추가하였다 만약 에러가 발생하면 이를 HashMap에 저장하고 Model에 담아 뷰로 전달한다 if (item.getPrice() != null && item.getQuantity() != null) { int resultPrice = item.getPrice() * item.getQuantity(); if (resultPrice < 10000) { errors.put("globalError", "가격 * 수량의 합은 10,000원 이상이어야 합니다. 현재 값 = " + resultPrice); } } 전체 오류 메시지 Validation V2 Spring은 에러를 저장하는 BindingResult객체를 제공한다 이 객체는 Fie..
-
[Spring MVC] 메시지, 국제화 기능Spring/Spring MVC 2021. 7. 18. 11:35
여러 웹 페이지에서 공통된 기준으로 반복해 사용하는 문구들을 메시지라고 한다 스프링은 이러한 메시지들을 일괄적으로 관리하고, 더 나아가서 언어별로 관리할 수 있도록 기능들을 제공한다 메시지 관리 기능을 사용하려면 MessageSource라는 빈을 등록해야 하는데 스프링 부트를 사용하면 자동으로 스프링 빈으로 등록해준다 타임리프에서 이러한 메시지 기능을 사용하려면 메시지 표현식 #{...} 을 사용하면 된다 메시지 사용 전 메시지 사용 후 상품 등록 폼 상품 등록
-
[Spring MVC] HTTP 메시지 컨버터Spring/Spring MVC 2021. 5. 22. 20:07
HTTP 메시지 컨버터 동작 과정 앞에서 본 것처럼 요청 데이터나 응답 데이터의 타입은 다양하다 이렇게 다양한 요청 데이터, 응답 데이터를 사용할 수 있는 것은 HTTP 메시지 컨버터가 있기 때문이다 이 메시지 컨버터는 어디에서 어떻게 동작하는지 알아보자 일단 Spring MVC 전체 구조를 보자 위 과정을 보면 요청 데이터나 응답 데이터를 가공하는 과정은 핸들러 어댑터에서 이루어진다고 유추할 수 있다 실제로 RequestMappingHandlerAdapter가 그 과정에 있다 RequestMappingHandlerAdapter는 Argument Resolver를 통해 핸들러에서 파라미터를 받아오고 객체를 생성하여 넘겨준다 HTTP 메시지 컨버터는 이 Argument Resolver, ReturnValu..
-
[Spring MVC] HTTP 요청 파라미터 - @ModelAttributeSpring/Spring MVC 2021. 5. 22. 16:19
@ModelAttribute 실제 개발을 하면 요청 파라미터를 받아서 필요한 객체를 만들고 그 객체에 값을 넣어주어야 한다 이를 사용하면 다음과 같은 코드가 될 것이다 Spring에서는 @ModelAttribute 어노테이션을 통해 해당 과정을 한번에 해결해준다 이를 사용하면 다음과 같이 코드를 바꿀 수 있다 @ModelAttribute 동작 과정 1. HelloData 객체 생성 2. 요청 파라미터의 이름으로 HelloData 객체의 프로퍼티를 찾는다 3. 찾은 프로퍼티를 객체에 바인딩 @ModelAttribute 생략하기 Spring은 해당 어노테이션을 생략 가능하게 설계되어있다 따라서 다음과 같은 코드가 사용 가능하다 하지만 요청 파라미터의 @RequestParam 어노테이션도 생략이 가능하므로 S..
-
[Spring MVC] 파라미터 받아오기 - 주의사항Spring/Spring MVC 2021. 5. 22. 15:52
@RequestParam을 사용하면 간편하게 파라미터를 받아올 수 있다 @RequestParam(required= ) 기능을 사용하면 파라미터를 선택적으로 받아올 수 있는데 여기에 몇가지 주의할 점이 있다 1. 파라미터 이름만 사용한 경우 만약 파라미터의 이름만 있고 값이 없는 경우 빈 문자로 입력된다 다음처럼 username을 입력하지 않는다면 null이 아니라 "" 문자열이 전달된다 2. 기본형(primitive)에 null을 입력한 경우 다음 예제의 경우 age는 필수 값이 아니다 (required=false) 따라서 age를 입력하지 않은 경우 정상 동작해야 하지만 실행해보면 에러가 발생한다 그 이유는 입력값에 null이 들어갔기 때문인데 이는 기본 자료형(primitive)이 null을 지원하지..