Spring MVC는 어노테이션을 중심으로 구성된다.
어노테이션들에 대해 알아보자.
@Controller
자신이 컨트롤러라는 것을 명시한다.
@RequestMapping("경로")
컨트롤러의 url 경로를 명시해준다.
메소드에 따라 @GetMapping, @PostMapping 을 사용한다.
@InitBinder
자동으로 변환되지 않는 데이터들을 변환해준다. ex)Date
@DateTimeFormat(pattern="yyyy/MM/dd")
Date 타입의 데이터를 pattern으로 변환시킨다.
@ModelAttribute
Spring MVC에는 Model이라는 데이터 전달자가 있다.
Model은 컨트롤러에서 생성된 데이터를 객체로 만들어 JSP에 전달해준다.
@ModelAttribute는 파라미터를 강제로 Model에 담아 전달시킨다.
void 타입
메서드의 이름이 view의 경로가 된다.
ex)
public void ex() -> /WEB-INF/views/ex.jsp
String 타입
반환받는 문자열이 view의 경로가 된다.
ex)
public String ex(){return "ex";} -> /WEB-INF/views/ex.jsp
객체 타입
주로 JSON 데이터를 만들어 내는 용도로 사용한다.
ex)
public @ResponseBody ExampleDTO ex(){
ExampleDTO dto = new ExampleDTO();
dto.setName("Charco");
dto.setAge(25);
return dto;
}
브라우저 화면에는 {"name":"Charco","age":"25"} 가 보여진다.
ResonseEntity 타입
원하는 헤더 정보나 데이터를 전달할 수 있다.
1.pom.xml에 commons-fileupload dependency를 추가한다.
2.ServletConfig 클래스에 @Bean(name = "multipartResolver")를
이용해 메서드를 작성한다.
3.업로드를 위한 뷰를 작성하고
4.전달 받은 파일들을 확인한다.
3.메서드에는 파일의 크기, 임시 경로 등을 정의한다.
@ControllerAdvice
해당 객체가 Spring의 Controller에서 발생하는 Exception을 처리하는 존재임을 명시
@ExceptionHanlder(Exception 클래스타입.class)
Exception 클래스타입에 따라 예외를 처리
ex)Exception.class 로 지정하면 모든 예외처리를 해당 메서드에서 처리.
404Error
404에러는 페이지 url이 존재하지 않을때 발생한다.
이를 처리하기 위해 jsp파일을 만들고
WebConfig클래스에 cutomizeRegistration 메서드를
Override 한다.