SPRING
-
핸들러 메소드 7부: 폼 서브밋 (에러 처리)SPRING/스프링 MVC 2021. 7. 4. 10:19
바인딩 에러 발생 시 Model에 담기는 정보 - Event - BindingResult.event Post / Redirect / Get 패턴 - https://en.wikipedia.org/wiki/Post/Redirect/Get - Post 이후에 브라우저를 리프래시 하더라도 폼 서브밋이 발생하지 않도록 하는 패턴 @Controller public class SampleController2 { // Form 화면 @GetMapping("/events/form") public String eventsForm(Model model) { Event newEvent = new Event(); newEvent.setLimit(50); model.addAttribute("event",newEvent); ret..
-
핸들러 메소드 6부: @ValidatedSPRING/스프링 MVC 2021. 7. 3. 18:09
@Valid 관련 API DEPENDENCY org.springframework.boot spring-boot-starter-validation javax.validation validation-api @Validated : 스프링 MVC 핸들러 메소드 아규먼트에 사용할 수 있으며, validation group이라는 힌트를 사용할 수 있다. @Valid 애노테이션에는 그룹을 지정할 방법이 없다. @Validated는 스프링이 제공하는 애노테이션으로 그룹 클래스를 설정할 수 있다. 아래와 같이 변수에 Validation 그룹을 설정할 수 있다. public class Event { interface ValidateLimit {}; interface ValidateName {}; private int id..
-
핸들러 메소드 5부: @ModelAttributeSPRING/스프링 MVC 2021. 7. 3. 17:06
@ModelAttribute - 여러 곳에 있는 단순 타입 데이터를 복합 타입 객체로 받아오거나 해당 객체를 새로 만들 때 사용할 수 있다. - 여러 곳? URI 패스, 요청 매개변수, 세션 등 - 생략 가능 값을 바인딩 할 수 없는 경우에는? - BindException 발생 400 에러 바인딩 에러를 직접 다루고 싶은 경우 - BindingResult 타입의 아규먼트를 바로 오른쪽에 추가한다. 바인딩 이후에 검증 작업을 추가로 하고 싶은 경우 - @Valid 또는 @Validated 애노테이션을 사용한다. @Controller public class SampleController { @PostMapping("/events/valid") @ResponseBody public Event getEvent(..
-
핸들러 메소드 4부: 폼 서브밋 (타임리프)SPRING/스프링 MVC 2021. 7. 3. 01:08
폼을 보여줄 요청 처리 - GET /events/form - 뷰: events/form.html - 모델: “event”, new Event() 타임리프 - @{}: URL 표현식 - ${}: variable 표현식 - *{}: selection 표현식 @Controller public class SampleController { // form.html 화면 호출 @GetMapping("/events/form") public String eventsForm(Model model) { Event newEvent = new Event(); newEvent.setLimit(50); model.addAttribute("event",newEvent); return "events/form"; } @PostMappi..
-
핸들러 메소드 3부: @RequestParamSPRING/스프링 MVC 2021. 6. 30. 00:37
@RequestParam - 요청 매개변수에 들어있는 단순 타입 데이터를 메소드 아규먼트로 받아올 수 있다. - 값이 반드시 있어야 한다. -> required=false 또는 Optional을 사용해서 부가적인 값으로 설정할 수도 있다. - String이 아닌 값들은 타입 컨버전을 지원한다. - Map 또는 MultiValueMap에 사용해서 모든 요청 매개변수를 받아 올 수도 있다. - 이 애노테이션은 생략 할 수 있다. 예시 : @Controller public class SampleController { @ResponseBody public Event getEvent2(@RequestParam(required = false, defaultValue = "ok") String name) { Even..
-
핸들러 메소드 2부: URI 패턴SPRING/스프링 MVC 2021. 6. 27. 23:46
@PathVariable - 요청 URI 패턴의 일부를 핸들러 메소드 아규먼트로 받는 방법. - 타입 변환 지원. - (기본)값이 반드시 있어야 한다. - Optional 지원 : @PathVariable(require = false) @MatrixVariable - 요청 URI 패턴에서 키/값 쌍의 데이터를 메소드 아규먼트로 받는 방법 - 타입 변환 지원. - (기본)값이 반드시 있어야 한다. - Optional 지원. - 이 기능은 기본적으로 비활성화 되어 있음. 활성화 하려면 다음과 같이 설정해야 함 @Controller public class SampleController { @GetMapping("/events/{id}") @ResponseBody public Event getEvent(@Pat..
-
HTTP 요청 맵핑하기 7부: 맵핑 연습 문제SPRING/스프링 MVC 2021. 6. 27. 15:57
다음 요청을 처리할 수 있는 핸들러 메소드를 맵핑하는 @RequestMapping (또는 @GetMapping, @PostMapping 등)을 정의하세요. 1. GET /events 2. GET /events/1, GET /events/2, GET /events/3, 3. POST /events CONTENT-TYPE: application/json ACCEPT: application/json 4. DELETE /events/1, DELETE /events/2, DELETE /events/3, 5. PUT /events/1 CONTENT-TYPE: application/json ACCEPT: application/json, PUT /events/2 CONTENT-TYPE: application/json ..
-
요청 맵핑하기 6부 커스텀 애노테이션SPRING/스프링 MVC 2021. 6. 27. 13:02
@RequestMapping 애노테이션을 메타 애노테이션으로 사용하기 - @GetMapping 같은 커스텀한 애노테이션을 만들 수 있다. 메타(Meta) 애노테이션 - 애노테이션에 사용할 수 있는 애노테이션 - 스프링이 제공하는 대부분의 애노테이션은 메타 애노테이션으로 사용할 수 있다. 조합(Composed) 애노테이션 - 한개 혹은 여러 메타 애노테이션을 조합해서 만든 애노테이션 - 코드를 간결하게 줄일 수 있다. - 보다 구체적인 의미를 부여할 수 있다. @GetMapping 예시 // 메타 애노테이션 : 애노테이션 위에 사용하는 애노테이션 // @Target, @Retention, @Documented, @RequestMapping // 조합 애노테이션 : 한개 혹은 여러 메타 애노테이션을 조합해서..