@RequestMapping
실무에서 사용되는 대부분의 컨트롤러는 @RequestMapping을 사용한다. 컨트롤러의 메서드에 @RequestMapping 어노테이션을 붙이면 해당 URL이 호출될 때 이 메서드가 호출된다. 어노테이션을 기반으로 동작하므로 메서드의 이름을 임의로 지을 수 있다.
예를 들어
@Controller
public class BoardController{
@RequestMapping("/board/article")
public ModelAndView getArticle(HttpServletRequest request, HttpServletResponse response){
...
}
}
.../board/article URL이 호출되면 getArticle 메서드가 호출된다.
또한 다음과 같이 method 옵션을 통해 GET, POST, DELETE 등의 HTTP 메서드 별로 호출을 달리 할 수도 있다.
@Controller
public class BoardController{
@RequestMapping(value = "/board/article", method = RequestMethod.GET)
public ModelAndView getArticle(HttpServletRequest request, HttpServletResponse response){
...
}
@RequestMapping(value = "/board/article", method = RequestMethod.POST)
public ModelAndView postArticle(HttpServletRequest request, HttpServletResponse response){
...
}
@RequestMapping(value = "/board/article", method = RequestMethod.DELETE)
public ModelAndView deleteArticle(HttpServletRequest request, HttpServletResponse response){
...
}
}
각 메서드에 중복되는 URL 경로가 있다면 다음과 같이 Controller 레벨에 @RequestMapping을 적용할 수도 있다.
@Controller
@RequestMapping("/board/article")
public class BoardController{
@RequestMapping(method = RequestMethod.GET) // "/board/article"
public ModelAndView getArticle(HttpServletRequest request, HttpServletResponse response){
...
}
@RequestMapping(value = "/save" , method = RequestMethod.POST) // "/board/article/save"
public ModelAndView postArticle(HttpServletRequest request, HttpServletResponse response){
...
}
@RequestMapping(value = "/del" method = RequestMethod.DELETE)// "/board/article/del"
public ModelAndView deleteArticle(HttpServletRequest request, HttpServletResponse response){
...
}
}
하지만 위와 같이 method 옵션을 이용해 GET, POST 방식을 구별하는 것은 번거롭고 귀찮다. 이를 대신해 사용할 수 있는 방식이 바로 @GetMapping, @PostMapping 어노테이션 방식이다.
@Controller
@RequestMapping("/board/article")
public class BoardController{
@GetMapping(method = RequestMethod.GET) // "/board/article"
public ModelAndView getArticle(HttpServletRequest request, HttpServletResponse response){
...
}
@PostMapping(value = "/save") // "/board/article/save"
public ModelAndView postArticle(HttpServletRequest request, HttpServletResponse response){
...
}
@DeleteMapping(value = "/del" ) // "/board/article/del"
public ModelAndView deleteArticle(HttpServletRequest request, HttpServletResponse response){
...
}
}
참고
1. https://www.inflearn.com/course/%EC%8A%A4%ED%94%84%EB%A7%81-mvc-1/dashboard
(인프런 김영한 강의)
반응형