Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
Tags
- 선형분류
- 5397번
- MySQL
- 알고리즘
- CH01
- 개발순서
- chapter01
- 로지스틱 회귀
- 스터디
- 1차예선
- 인공지능
- Numerical optimization
- secant
- undirected graphical model
- Perceptron Convergence theorem
- chapter02
- 자바ORM표준JPA프로그래밍
- 근구하기
- 2018
- vector미분
- 선형판별분석
- graphical models
- bisection
- falsePosition
- 델타 rule
- 알고리즘대회
- 이것이 MySQL이다
- Fisher discriminant analysis
- directed graphical model
- SCPC
Archives
- Today
- Total
computer_study
[Spring] 14. MVC4 : 날짜 값 변환, @PathVariable, 익셉션 처리 본문
1. 프로젝트 준비
2. 날짜를 이용한 회원 검색 기능
3. 커맨드 객체 Date 타입 프로퍼티 변환 처리: @DateTimeFormat
- @DateTimeFormat 애노테이션이 있다면 지정한 형식을 이용해 문자열을 LocalDateTime 타입으로 변환한다.
import org.springframework.format.annotation.DateTimeFormat;
public class ListCommand{
@DateTimeFormat(pattern = "yyyyMMddHH")
private LocalDateTime from;
}
- 잘못된 형식 입력 시 400에러가 발생하기에, 에러핸들링이 필요하다.
4. 변환 처리에 대한 이해
@DateTimeFormat 애노테이션 사용 시 WebDataBinder가 문자열을 LocalDateTime타입으로 변환해준다.
WebDataBinder는 ConversionService에 그 역할을 위임하고 DefaultFormattingConversionService가 타입 변환을 실행한다.
5. MemberDao 클래스 중복 코드 정리 및 메서드 추가
6. @PathVariable을 이용한 경로 변수 처리
- 경로의 일부가 고정되어 있지 않고 달라질 때 사용할 수 있는 것
...
import org.springframework.web.bind.annotation.PathVariable;
...
@GetMapping("/members/{id}")
public String detail(@PathVariable("id"))Long memId, Model model{
...
}
// {id}값을 @PathVariable("id")가 붙어있는 memId에 전달
7. 컨트롤러 익셉션 처리하기
@ExceptionHandler 애노테이션
같은 컨트롤러에서 @ExceptionHandler 애노테이션을 적용한 메서드가 존재하면 그 메서드가 익셉션을 처리한다.
(컨트롤러에서 발생한 익셉션을 직접 처리하고 싶을 경우 사용)
import org.springframework.beans.TypeMismatchException;
import org.springframework.web.bind.annotation.ExceptionHandler;
...
@ExceptionHandler(TypeMismatchException.class)
public String handleTypeMismatchException(){ // 해당 익셉션이 발생하면 메서드 실행
return "member/invalidId";
}
@ExceptionHandler(MemberNotFoundException.class)
public String handleNotFoundException(){
return "member/noMember";
}
...
@ControllerAdvice를 이용한 공통 익셉션 처리
다수의 컨트롤러에서 동일한 타입의 익셉션이 발생하는 경우
...
// spring 패키지와 그 하위 패키지에 속한 컨트롤러 클래스를 위한 공통기능 정의
// 적용 클래스가 동작하기 위해선 해당 클래스를 빈으로 등록해야한다.
@ControllerASdvice("spring")
public class CommonExceptionHandler{
@ExceptionHandler(RuntimeException.class)
public String handle RuntimeException(){ // 익셉션발생 시 해당 메서드로 처리
return "error/commonException";
}
}
@ExceptionHandler 적용 메서드의 우선 순위
컨트롤러 클래스에 적용된 @ExceptionHandler 메서드 > @ControllerAdvice 클래스에 있는 @ExceptionHandler 메서드
(컨트롤러 클래스에 적용된 @ExceptionHandler 메서드를 우선 검색하기에)
@ExceptionHandler 애노테이션 적용 메서드의 파라미터와 리턴 타입
- 파라미터
- HttpServletRequest, HttpServletResponse, HttpSession
- Model
- 익셉션
- 리턴타입
- ModelAndView
- String (뷰 이름)
- (@ResponseBody 애노테이션을 붙인 경우)임의 객체
- ResponseEntity
'스터디 > 스프링5 프로그래밍 입문' 카테고리의 다른 글
[Spring] 16. JSON 응답과 요청 처리 (0) | 2022.05.29 |
---|---|
[Spring] 15. 간단한 웹 어플리케이션의 구조 (0) | 2022.05.29 |
[Spring] 13. MVC3 : 세션, 인터셉터, 쿠키 (0) | 2022.05.16 |
[Spring] 12. MVC2 : 메시지, 커맨드 객체 검증 (0) | 2022.05.16 |
[Spring] 11. MVC1 : 요청 매핑, 커맨드 객체, 리다이렉트, 폼 태그, 모델 (0) | 2022.05.09 |
Comments