본문 바로가기

spring

@RequestMapping 어노테이션을 이용한 요청 매핑 설정

@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