Spring MVC中用于参数绑定的注解有很多,都在org.springframework.web.bind.annotation包中,根据它们处理的request的不同内容部分可以分为四类(主要讲解常用类型)
>>处理request body 部分的注解: @RequestParam,@RequestBody
>>处理reuqest url 部分的注解: @PathVariable
>>处理request header 部分的注解: @RequestHeader,@CookieValue
>>处理attribute类型的注解: @SessionAttibute,@ModelAttribute
@RequestMapping注解:
**@RequestMapping虽然也在org.springframework.web.bind.annotation下面,但是严格来说,他并不属于参数绑定注解
开发者需要在控制器内部为每一个请求动作开发相应的处理方法。org.springframework.web.bind.annotation.RequestMapping注解类型指示Spring用哪一个类或方法来处理请求动作,该注解可用于类或方法。
@RequestMapping可以用来注释一个控制器类,在这种情况下,所有方法都将映射为相对于类级别的请求,表示该控制器处理的所有请求都被映射到value属性所指示的路径下
@Controller @RequestMapping(value = "/user") public class UserController{ @RequestMapping(value = "/register") public String register(){ return "register"; } @RequestMapping(value = "/login") public String login(){ return "login"; } }
请求URL : http://localhost:8080/user/register
http://localhost:8080/user/login
>>1.value属性
@RequestMapping(value = "/hello") public ModelAndView hello(){ return ...; }
该实例使用@RequestMapping注释的value属性将URL映射到方法上,在这个例子中,将hello映射到hello方法上,使用如下URL访问应用时将由hello方法进行处理:
http://localhost:8080/context/hello
由于value属性是@RequestMapping注释的默认属性,因此,如果只有唯一的属性,则可以省略属性名
@RequestMapping(value = "/hello")
@RequestMapping("/hello")
但如果超过一个属性,就必须写上value属性名称
value属性的值也可以是一个空字符串,此时该方法被映射到如下请求URL:
http://localhost:8080/context
>>2.method属性
该属性用来指示该方法仅仅处理那些HTTP请求方式
@RequestMapping(value = "/hello" method = "RequestMethod.POST")
以上代码表示该方法仅支持POST请求
也可以同时支持多个HTTP请求方式:
@RequestMapping(value = "/hello",method = {RequestMethod.POST,RequestMethod.GET})
如果没有指定method属性值,则请求处理方法可以处理任意的HTTP请求方式