2017-01-08 5 views
1

Я узнаю о Spring и MVC.Разница между использованием @RequestMapping с использованием метода и без него

Таким образом, в классе контроллера, у меня есть этот метод:

@RequestMapping(value="/buscaUsuario/{apodo}", method= RequestMethod.GET) 
public String searchUser(@PathVariable("apodo") String apodo){ 
    String res; 
    int usrId = this.usuarioService.bucarUsuario(apodo);   
    if(usrId == 0) res = "/error"; 
    else res =("/user/"+Integer.toString(usrId)); 
    return ("redirect:"+res); 
} 

И это работает. Но если я изменил его, удалив часть «method = RequestMethod.GET». Я имею в виду, используя его следующим образом:

@RequestMapping(value="/buscaUsuario/{apodo}") 
public String searchUser(@PathVariable("apodo") String apodo){ 
    String res; 
    int usrId = this.usuarioService.bucarUsuario(apodo);   
    if(usrId == 0) res = "/error"; 
    else res =("/user/"+Integer.toString(usrId)); 
    return ("redirect:"+res); 
} 

Это ТАКЖЕ работает. Итак, мой вопрос: в чем разница?

+4

Прочитайте http://docs.spring.io/spring/docs/current/spring-framework-reference/htmlsingle/#mvc-ann-requestmapping. Он говорит = * В приведенном выше примере не указаны GET vs. PUT, POST и т. Д., Потому что '@ RequestMapping 'сопоставляет все HTTP-методы по умолчанию. Используйте '@RequestMapping (method = GET)' или '@ GetMapping', чтобы сузить отображение. * –

ответ

1

Аннотации @RequestMapping обрабатывают все типы входящих HTTP-запросов, включая GET, POST, PUT и т. Д. По умолчанию предполагается, что все входящие запросы к URL-адресам относятся к типу HTTP GET. Чтобы различать сопоставление по типу HTTP-запроса, вам необходимо явно указать метод HTTP-запроса. for more information

Смежные вопросы