@RequestMapping 어노테이션은 컨트롤러가 처리할 요청URL을 명시하는데 사용되며, 클래스나 메서드에 적용될 수 있다.
첫째로, @RequestMapping 어노테이션을 클래스에는 적용하지 않고 메서드에만 적용할 경우에는
각각의 메서드가 처리할 요청 URL을 명시하게 된다.
import! org.springframework.stereotype.Controller;
import! org.springframework.ui.ModelMap;
import! org.springframework.web.bind.annotation.RequestMapping;
import! org.springframework.web.bind.annotation.ReqeustParam;
@Controller
pubilc class SearchAnnotController {
@RequestMapping("/annot/search/internal.do")
public String searchInternal(@RequestParam("query") String query,
@RequestParam("pageNo") int pageNo, ModelMap modelMap) {
return search(internalSearchService, query, pageNo, modelMap);
}
@RequestMapping("/annot/search/external.do")
public String searchExternal(@RequestParam("query") String query,
@RequestParam("pageNo") int pageNo, ModelMap modelMap) {
return search(externalSearchService, query, pageNo, modelMap);
}
}
다수의 메서드에 @RequestMapping 어노테이션을 적용하면,
MultiActionController와 같이 한 개의 컨트롤러에서 다수의 요청을 처리할 수 있게 된다.
@RequestMapping 어노테이션의 method 엘리먼트를 이용하여 처리할 수 있는 HTTP METHOD 목록을 지정할 수도 있다.
@RequestMapping(value="/anno/search/external.do", method=RequestMethod.POST)
public String searchExternal(...) {
....
}
@RequestMapping 어노테이션을 클래스 타입에 적용하게 되면, 해당 컨트롤러 클래스는 지정한 URL만을 처리할 수 있게 된다.
이 경우 메서드에 적용되는 @RequestMapping 어노테이션은 더 이상 URL을 명시할 수 없으며,
method엘리먼트와 params 엘리먼트만을 지정할 수 있게 된다.
예를 들어, SimpleFormController처럼 GET 요청이 들어오면 입력 폼을 출력하고 POST 요청이 들어오면 폼 전송을 처리하고 싶다면,
다음과 같이 클래스 타입에는 Mapping URL을 명시한 @RequestMapping 어노테이션을 적용하고, 각 메서드에서는 method
엘리먼트를 명시한 @RequestMapping 어노테이션을 적용하면 된다.
import! org.springframework.web.bind.annotation.RequestMapping;
import! org.springframework.web.bind.annotation.ReqeustMethod;
@Controller
@RequestMapping("/annot/login.do")
public class LoginAnnotController {
...
@RequestMapping(method = RequestMethod.GET)
public String setupForm(ModelMap map) {
...
}
@RequestMapping(method = RequestMethod.POST)
public String processSubmit(@ModelAttribute("login")
LoginCommand loginCommand, BindingResult erros, ModelMap model) {
...
}
}
출처 : http://blog.daum.net/_blog/BlogTypeView.do?blogid=0Ps1S&articleno=6&_bloghome_menu=recenttext#ajax_history_home
'spring' 카테고리의 다른 글
XStream (0) | 2012.03.15 |
---|---|
XStream XML (0) | 2012.03.15 |
@Controller, @RequestMapping - Annotation in Spring(어노테이션을 사용한 컨트롤러 구현) (0) | 2012.03.15 |
URI Template (0) | 2012.03.15 |
@PathVariable 사용한 url 매핑 (0) | 2012.03.15 |