일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 백준
- 오블완
- http 메시지 컨버터
- 의존관계
- 참조변수
- 코드트리
- 인터페이스
- 서블릿
- 스프링컨테이너
- HttpServletResponse
- @configuration
- 오버라이딩
- JSON
- 코드트리조별과제
- html form
- 테스트코드
- 다형성
- 코딩테스트
- 싱글톤
- 김영한
- 추상클래스
- 프록시
- equals()
- java
- objecterror
- ocp
- fielderror
- 티스토리챌린지
- DI
- 스프링
- Today
- Total
목록TIL/김영한의 스프링 MVC 2편 - 백엔드 웹 개발 핵심 기술 (25)
minOS
Validator 분리1목표 :복잡한 검증 로직을 별도로 분리컨트롤러에서 검증 로직이 차지하는 부분은 매우 크다. 이런 경우 별도의 클래스로 역할을 분리하는 것이 좋다. 그리고 이렇게 분리한 검증 로직을 재사용할 수도 있다.스프링이 제공하는 Validator 인터페이스를 구현하려고 한다.public interface Validator { /** * Can this {@link Validator} {@link #validate(Object, Errors) validate} * instances of the supplied {@code clazz}? * This method is typically implemented like so: * return Foo.class.isAssignableFrom(c..
오류 코드와 메시지 처리1목표 :오류 메시지를 체계적으로 다루어보자.FieldError 생성자 두가지 public FieldError(String objectName, String field, String defaultMessage); public FieldError(String objectName, String field, @Nullable Object rejectedValue, boolean bindingFailure, @Nullable String[] codes, @Nullable Object[] arguments, @Nullable String defaultMessage) 파라미터 목록- objectName` : 오류가 발생한 객체 이름- field` : 오류 필드- rejectedValue` :..
목표- 사용자 입력 오류 메시지가 화면에 남도록 하자. 예) 가격을 1000원 미만으로 설정시 입력한 값이 남아있어야 한다. `- 'FieldError' , 'ObjectError' 에 대해서 더 자세히 알아보자. 사용자 입력 오류 화면에 남기기@PostMapping("/add") //`BindingResult bindingResult` 파라미터의 위치는 `@ModelAttribute Item item` 다음에 와야 한다. public String addItemV2(@ModelAttribute Item item, BindingResult bindingResult ,RedirectAttributes redirectAttributes, Model model) { // bindReus..
스프링이 제공하는 검증 오류 처리 방법BindingResult스프링이 제공하는 검증 오류를 보관하는 객체이다. 검증 오류가 발생하면 여기에 보관하면 된다. `BindingResult` 가 있으면`@ModelAttribute` 에 데이터 바인딩 시 오류가 발생해도 컨트롤러가 호출된다 ex) @ModelAttribute에 바인딩 시 타입 오류가 발생하면?**`BindingResult` 가 없으면 400 오류가 발생하면서 컨트롤러가 호출되지 않고, 오류 페이지로 이동한다. `BindingResult` 가 있으면 오류 정보( `FieldError` )를 `BindingResult` 에 담아서 컨트롤러를 정상 호출한다. BindingResult에 검증 오류를 적용하는 3가지 방법- @ModelAttribute` ..
검증 요구 사항이 추가되었다고 가정검증 요구 사항 검증 로직 추가 1) 타입 검증 가격, 수량에 문자가 들어가면 검증 오류 처리 2)필드 검증 상품명 필수, 공백X 가격: 1000원 이상, 1백만원 이하 수량: 최대 9999 3) 특정 필드의 범위를 넘어서는 검증 가격 * 수량의 합은 10,000원 이상웹 서비스는 폼 입력시 오류가 발생하면, 고객이 입력한 데이터를 유지한 상태로 어떤 오류 가 발생했는지 친절하게 알려주어야 한다. 컨트롤러의 중요한 역할중 하나는 HTTP 요청이 정상인지 검증하는 것이다.상품 저장 검증 실패 시나리오고객이 상품 등록 폼에서 상품명을 입력하지 않거나, 가격, 수량 등이 너무 작거나 커서 검증 범위를 넘어서면, 서버 검 증 로직이 실패해야 한다. 이렇게 검증에..
메세지 어떤 기획자가 상품명이라는 단어를 모두 상품이름으로 고쳐달라고 하면 어떻게 해야할까?lable에 있는 단어를 변경하려면 모든 화면에서 그 단어를 찾아 변경해야한다.왜냐하면 해당 HTML 파일에 메시지가 하드코딩 되어 있기 때문이다.1)messages.properties 라는 파일 만들기hello= 안녕hello.name =안녕 {0}label.item=상품label.item.id=상품 IDlabel.item.itemName=상품명label.item.price=가격label.item.quantity=수량# 페이지 제목page.items=상품 목록page.item=상품 상세page.addItem=상품 등록page.updateItem=상품 수정# 버튼button.save=저장button.cancel=취..