반응형
DispatcherServlet은 웹 요청을 받는 즉시 @Controller가 달린 컨트롤러 클래스에 처리를 위임한다. 그 과정은 컨트롤러 클래스의 핸들러 메소드(컨트롤러에 정의 된 메소드)에 선언 된 다양한 @RequestMapping 설정 내용에 따른다
@RequestMapping
: 요청에 대해 특정 메서드와 매핑하기 위해 사용하는 어노테이션
메소드와 클래스레벨에 사용할 수 있음
보통 value와 method 값을 설정함
value 는 요청받을 url 설정, method는 요청 방식 정의
@RequestMapping(value="경로", method="요청 방식")
1) value 만 설정
: method 방식을 지정하지 않으면 get/post 요청 둘 다 처리함.
@Controller
public class MethodMappingTestController {
@RequestMapping("/menu/regist")
public String registMenu(Model model){
model.addAttribute("message", "신규 메뉴 등록용 핸들러 메소드 호출함");
return "mappingResult";
}
}
2) value와 method 설정
: 정의 된 메소드가 없는데 호출하는 경우 405 - 허용하지 않는 메소드 오류 발생
@Controller
public class MethodMappingTestController {
@RequestMapping(value = "/menu/modify", method = RequestMethod.GET)
public String modifyMenu(Model model) {
model.addAttribute("message", "GET 방식의 메뉴 수정용 핸들러 메소드 호출함");
return "mappingResult";
}
3) return 타입을 void로 하는 경우
: viewResolver는 요청 주소 자체를 view name으로 해석함.
@Controller
public class MainController {
@RequestMapping("/main")
public void showMain() {}
}
반응형
4) 클래스 레벨에 @RequestMapping 어노테이션 사용
: 클래스 레벨에 @RequestMapping를 사용하여 공통 URL을 설정할 수 있음
@Controller
@RequestMapping("/order/*") 앞에 오는 url 고정 시키기
public class ClassMappingTestController {
@GetMapping("/regist")
public String registOrder(Model model) {
model.addAttribute("message", "GET 방식의 주문 등록용 핸들러 메소드 호출함");
return "mappingResult";
}
여러 메소드 공통 처리 가능함
@RequestMapping(value= {"modify", "delete"}, method = RequestMethod.POST)
public String modifyAndDelete(Model model) {
model.addAttribute("message", "POST 방식의 주문 정보 수정과 주문 정보 삭제 공통 처리용 핸들러 메소드 호출함");
return "mappingResult";
}
@GetMapping와 @PostMapping
: 요청 메소드별 전용 어노테이션(핸들러 메소드보다 간결함)
@GetMapping
: 요청 메소드가 GET 방식일 때 사용
@Controller
public class MethodMappingTestController {
@GetMapping("/menu/delete")
public String getDeleteMenu(Model model) {
model.addAttribute("message", "GET 방식의 메뉴 삭제용 핸들러 메소드 호출함");
return "mappingResult";
}
}
@PostMapping
: 요청 메소드가 POST 방식일 때 사용
@Controller
public class MethodMappingTestController {
@PostMapping("/menu/delete")
public String postDeletMenu(Model model) {
model.addAttribute("message", "POST 방식의 메뉴 삭제용 핸들러 메소드 호출함");
return "mappingResult";
}
반응형
'프로그래밍 > Spring & Spring boot' 카테고리의 다른 글
[Spring스프링] @RequestParam / required / defaultValue (0) | 2022.09.06 |
---|---|
[Spring/스프링] @PathVariable (0) | 2022.09.06 |
[Spring / 스프링] Apache Maven / POM.xml / web.xml / root-context.xml / servlet-context.xml (0) | 2022.09.06 |
[Spring / 스프링] Spring MVC구성 요소와 처리 과정 (0) | 2022.09.05 |
[Spring / 스프링] Spring Framework 의 특징과 구성모듈 (0) | 2022.09.05 |