클라이언트의 요청을 처리하기 위해 해당 컨트롤러(Handler)로 매핑하는 방법은 두가지가 있다.
매핑 애너테이션 관련 클래스
매핑 종류는 크게 경로 매핑,메서드 매핑 등이 있다.
클래스(타입) 뿐만아니라 ,메서드 단위까지 세분화하여 적용 가능 하다.
파라미터, 헤더 정보를 통해서도 매핑 할 수 있다.
기본 개념
요청 경로는 반드시 설정해야 하는 필수 정보이다.
클래스 레벨과 메서드 레벨
컨트롤러에 요청할 때는 클래스(타입) 레벨 과 메서드 레벨로 지정할 수 있다.
경로 매핑 (Path Mapping): 경로 매핑은 웹 요청의 URL 경로를 특정 컨트롤러 또는 핸들러 메서드와 연결하는 것을 의미한다.
@RequestMapping 애노테이션을 사용하는 것이 대표적이다.
java
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello World!";
}
}
java
@Controller
public class HelloController {
@GetMapping("/hello")
public String hello() {
return "Hello World!";
}
}
클래스 레벨의 요청 경로에 메서드 레벨의 요청경로를 덧붙힌 형태가 최종 경로가 된다.
@Controller
@RequestMapping("/board") //클래스 레벨
public class BoardController {
@RequestMapping("/register") //메서드 레벨
public void registerForm() {
log.info("registerForm");
}
최종 경로는 “/board/register” 가 된다.
**메서드 레벨 단독 매핑**
매핑 조건에 딱히 공통점이 없는 경우 메서드 레벨에서만 매핑정보를 지정할 수 있다.
@Controller
public class HomeController{
@RequestMapping(value="/list")
@RequestMapping(value="/remove")
@RequestMapping(value="/notice")
}
만약 컨트롤러 클래스에 @Controller 애노테이션을 붙여 빈 자동 스캔으로 등록되게 했다면 타입 레벨 @RequestMapping은 생략할 수 있다.
경로 매핑 종류
@RequestMapping의 value속성에 요청 경로를 설정한다.
@RequestMapping(value = "/board/register")
@RequestMapping(path = "/board/modify")
@RequestMapping("/board/list")
@RequestMapping(value = { "/test/loginForm.do", "/test/loginForm2.do" }
Ant 스타일
@RequestMapping(value="/post")
@RequestMapping(value="/post.*")
@RequestMapping(value="/post/**/comment")
@RequestMapping(value={"/post", "/P"})
타입 레벨에 ANT 패턴을 사용했을 경우에도 메서드 레벨과 조합될 수 있다.
@RequestMapping(value=**"/post/**"**)
public class MemberController{
@RequestMapping(value=**"/add"**)
// /post/**/add 에 매핑
}
참고)매핑 상속