[Spring] @RequestMapping, @GetMapping, @PostMapping에 대하여

@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

(인프런 김영한 강의)

반응형

댓글

Designed by JB FACTORY