본문 바로가기

Spring

(42)
로그인 처리1 - 쿠키, 세션 인프런 영한님의 스프린mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 도메인이 가장 중요하다 향후 web을 다른 기술로 바꾸어도 도메인은 그대로 유지할 수 있어야 한다.
검증2 - Validation : HTTP 메시지 컨버터 인프런 김영한님의 스프링 mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 참고 @ModelAttribute는 HTTP 요청 파라미터(URL 쿼리 스트링, POST Form)를 다룰 때 사용한다. @RequestBody는 HTTP Body의 데이터를 객체로 변환할 때 사용한다. 주로 API JSON 요청을 다룰 때 사용한다. @RequestBody의 경우 주로 api를 통해 데이터를 주고 받는데 이때 다음과 같은 경우로 나뉜다. 성공 요청 : 성공 실패 요청 : JSON을 객체로 생성하는 것 자체가 실패함 검증 오류 요청 : JSON을 객체로 생성하는 것은 성공했고, 검증에서 실패함 만약 HttpMessageConverter에서 요청 JSON을 도메인 객체로 생성하는데 실패하면 컨트롤러 자체가 호출되..
검증2 - Validation : Form 전송 객체 분리 인프런 김영한님의 스프링 mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? BeanValidation의 기능인 groups를 실무에서는 잘 사용하지 않는다. 폼에서 전달하는 데이터와 도메인 객체와 딱 맞는 상황이 적기 떄문. 전체적인 흐름 폼 데이터 전달에 도메인 객체 사용 HTML Form → 도메인 객체 → 컨트롤러 → 도메인객체 → Repository 장점 : 중간에 Item을 만드는 과정이 없어서 간단하다 단점 : 간단한 경우에만 적용할 수 있고 수정시 검증이 중복될 수 있고, groups를 사용해 복잡도가 올라간다. 폼 데이터 전달을 위한 별도의 객체 사용 HTML Form -> 등록용 폼 객체-> Controller -> 도메인 객체생성 -> Repository 장점 : 전송하는 폼의 데이..
검증2 - Validation : Bean Validation 인프런 김영한 님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? BeanValidation - 소개 검증 로직을 모든 프로젝트에 적용할 수 있게 공통화하고, 표준화 한 것이 바로 BeanValidation 검증 애노테이션 정의 및 사용법 @NotBlank : 빈값 + 공백만 있는 경우를 허용하지 않는다. @NotNull : null 을 허용하지 않는다. @Range(min = 1000, max = 1000000) : 범위 안의 값이어야 한다. @Max(9999) : 최대 9999까지만 허용한다. @Data public class Item { private Long id; @NotBlank private String itemName; @NotNull @Range(min = 1000, max ..
검증1 - Validation : Validator 분리1,2 인프런 김영한님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? Validator 분리1 스프링은 검증을 체계적으로 제공하기 위해 다음 인터페이스를 제공한다. public interface Validator { boolean supports(Class clazz); void validate(Object target, Errors errors); } supprort(){} : 해당 검증기를 지원하는 여부 확인 validate(Object target, Errors errors) : 검증 대상 객체와 BindingResult Validator 분리2 WebDataBinder는 스프링의 파라미터 바인딩의 역할을 해주고 검증 기능도 내부에 포함한다. @InitBinder public void ini..
검증1 - Validation : 오류 코드와 메시지 처리1~6 BindingResult 가 제공하는 rejectValue() , reject() 를 사용하면 FieldError , ObjectError 를 직접 생성하지 않고, 깔끔하게 검증 오류를 다룰 수 있다. 인프런 김영한님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 오류 코드와 메시지 처리1 FieldError는 두가지 생성자를 제공한다. public FieldError(String objectName, String field, String defaultMessage); public FieldError(String objectName, String field, @Nullable Object rejectedValue, boolean bindingFailure, @Nullable String[]..
검증1 - Validation : BindingResult1, 2, FieldError GlobalError 인프런 김영한님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 스프링에서는 검증 오류처리방법으로 BindingResult를 제공한다. 💡주의! BindingResult 파라미터의 위치는 @ModelAttribute 다음에 와야 한다 필드 오류 - FieldError if (!StringUtils.hasText(item.getItemName())) { bindingResult.addError(new FieldError("item", "itemName", "상품 이름은 필수입니다.")); } FieldError 생성자 요약 필드에 오류가 있으면 FieldError 객체를 생성해서 bindingResult 에 담아두면 된다. objectName : @ModelAttribute이름 field : ..
검증1 - Validation 인프런 김영한님의 스프링 mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? 검증을 직접 처리하는 방법에 대해서 배웠다. 컨트롤러의 중요한 역할중 하나는 HTTP 요청이 정상인지 검증하는 것이다. 클라이언트 검증은 조작할 수 있으므로 보안에 취약하다. 서버만으로 검증하면, 즉각적인 고객 사용성이 부족해진다. 둘을 적절히 섞어서 사용하되, 최정적으로 서버 검증은 필수 API 방식을 사용하면 API스팩을 잘 정의해서 검증 오류를 aPI응답 결과에 잘 남겨주어야 함 검증에는 클라이언트 검증과 서버 검증이 있다. 정상로직과 실패 로직 만약 검증시 오류가 발생하면 어떤 검증에서 오류가 발생했는지 정보를 담아주어야 한다.→ 검증시 오류가 발생하면 errors 에 담아둔다. 이때 어떤 필드에서 오류가 발생했는지 구..
메시지, 국제화 : 메시지, 국제화 소개, 스프링 메시지 설정및 사용 인프런 김영한님의 스프링mvc2편을 보고 정리한글입니다. 무엇을 배웠나요? 메시지, 국제화 소개 다양한 메시지를 한 곳에서 관리하는 기능을 메시지 기능이라고 한다. 메시지 기능 예시 item=상품 item.id=상품 ID item.itemName=상품명 item.price=가격 item.quantity=수량 각 HTML들은 다음과 같이 해당 데이터를 key 값으로 불러서 사용하는 것이다. 메시지를 나라별로 별도로 관리하면 서비스를 국제화 할 수 있다. 💡한국에서 접근한건지 영어에서 접근한 것인지는 인식하는 방법은 HTTP accept-language 해더 값을 사용하거나 사용자가 직접 언어를 선택하도록 하고, 쿠키 등을 사용해서 처리하면 된다. 스프링 메시지 소스 설정 메시지 관리 기능을 제공하는 Mes..
타임리프 - 스프링 통합과 폼 : 체크박스, 라디오버튼, 셀렉트 박스 인프런 김영한님의 스프링mvc2편을 보고 정리한 글입니다. 무엇을 배웠나요? html에서 체크박스를 체크하면html Form에서 on이라는 값이 넘어간다. 이때 스프링은 on이라는 문자를true타입으로 변환해준다. (by 스프링타입 컨버터)💡이때 스프링은 체크박스의 이름 앞에 언더스코어(_)를 만들어서 전송을 하면 체크를 해제했다고 인식할 수 있다 ⚠️ HTML에서 체크 박스를 선택하지 않고 폼을 전송하면 타임리프에서 생성한 필드 자체가 서버로 전송되지 않는다. 즉 서버에서는 null로 처리한다. 이때 만약 수정을 하려고 하는 경우 상황에 따라서 문제가 될수도 있다.(체크 되어있는 것을 해제하고 서버로 전송해버리면 서버로는 아무값도 넘어가지 않기 때문에 값이 수정 되지 않을 수도 있다.) ex) open..