1. 상위문서


2. 개요

계속해서 스프링 프레임워크에 대한 글을 올리고 있습니다.

오늘은 컨트롤러 관련 주요 어노테이션에 대해 알아보려고 합니다...

3. @Controller

@Controller 는 이 클래스가 스프링 컨트롤러임을 알려줍니다... 따라서 서블릿을 상속할 필요가 없습니다...

@RequestMapping 은 url과 handler(컨트롤러의 메소드)가 매핑되도록 해줍니다...

이 RequestMapping은 클래스 위에 달 수도 있고 메소드 위에 달 수도 있네요... 만약 별도의 리턴 페이지가 지정되지 않으면 RequestMapping("/url") 에 설정된 url로 돌아갑니다...

@PathVariable 은 url의 일부를 메소드 파라미터에서 사용할 수 있게 합니다... (바인딩) RequestMapping과 PathVariable을 같이 사용하기도 합니다... 또 능력이 되신다면 regular expression을 쓸 수도 있고요...

@RequestParam 은 HTTP 파라미터를 메소드 파라메터로 넣어주는건데요...

예를 들면 @RequestParam("myId") int myId 라고 하면 int = request.getParameter("myId") 와 같은겁니다... 이렇게도 가능합니다. @RequestParam(value="myId", required=false) int myId 말이죠...

required는 기본 true인데 이 파라미터가 필수인지 아닌지를 지정하는거죠...

이밖에 업로드 파일 처리 시에도 자주 사용합니다... (multipartfile 타입 처리)

@ModelAttribute 갑니다... 화면의 form에서 model이 넘어오는데 이를 메소드 파라미터로 매핑합니다...

ModelAttribute는 따로 설명해야 할 정도로 많은 개념이 내포되어 있네요...

@SessionAttribute 는 세션 내에 model 정보를 유지하고자 할 때 씁니다...

만약 세션에 담긴 atteibute를 삭제하려면 SessionStatus 객채의 setComplete() 메소드를 쓰면 되죠...

이상입니다...