Spring MVC @RequestMapping @ResponseBody @RequestBody @PathVariable @RestController ...总结

Spring MVC框架是目前使用最广泛的Web框架,在该框架种涉及到一些常用的重要注解,现总结如下:

@RequestMapping

    作用:请求映射,也就是将请求的URI映射到特定的Hander类或者方法上。官方解释如下:

在该注解下还支持一些相关的注解和参数,当然你可以根据你的需求进行配置。

1.path配置@RequestMapping(“/ foo”)等价于@RequestMapping(path =“/ foo”);

2.方法配置指定该请求支持的HTTP方法,GET,POST,HEAD,OPTIONS,PUT,PATCH,DELETE,TRACE。,配置方式

 @RequestMapping(“/ foo”,method = RequestMethod.GET),RequestMethod是一个枚举类,

为了简化方法的配置,Spring MVC框架推出了以上方法的复合注解,例如@ GetMapping,@ PostMapping,例如GetMapping的注解实现

3.参数配置和报头配置,就是通过指定参数和标题来缩小映射,其实一般不常用

4.consumers设置,该设置就是指定HTTP请求中的Content-Type。可以指定一个或者多个以及非允许的格式

此处就是限制POST之类的请求体中的数据格式。

5.produces设置,该设置就是指定HTTP请求中的接受头的设置。

那么Content-Type与Accept的区别是什么?两者都是描述媒体类型的,表示为MIME类型。在响应体中,Content-Type标题告诉客户实际返回的内容的内容类型。接受请求的HTTP标头通告了内容类型,并表示为MIME类型,客户端是能够理解的。使用内容协商,服务器然后选择其中一个提议,使用它并通过Content-Type响应头通知客户它的选择。

@ResponseBody

         该注释表明一个方法的返回值应该被绑定到web响应的body体内。现在web开发普遍是前后端分离以及ajax请求技术的使用,使用Web MVC的场景较少,所以为了避免在每一个方法上添加该注解的繁琐,春天提供了RestController注解,该注解是与@ResponseBody @Controller的复合注解。

@RequestBody

该注解表明一个方法的参数应该被绑定到网页请求的身体体上,这个请求体会被HttpMessageConverter解析为指定的类型。

唯一可配置的参数是必需的,用来指示该参数为必须还是非必须。例如

@PostMapping( “/添加/用户”)

public void add(@RequestBody User user){

}

@PathVariable

该注解表明一个方法的参数被绑定到一个URI模板变量。例如

@GetMapping( “/选择/ {用户id}”)

public void select(@PathVariable Integer userId){

}

@RequestParam

该注解让我们可以方便的从一个请求中获取参数,但是前提条件是请求的参数类型是地图,那么实际应用中只有获得请求以及非GET请求时身体中数据提交方式是形式的数据或者X-WWW - 形式进行了urlencoded才可以使用该方式获取参数,否则会报

org.springframework.web.bind.MissingServletRequestParameterException:必需的字符串参数'**'不存在

@GetMapping( “/选择/”)

public void select(@RequestParam Integer userId){

}

除了以上注解为还有一些注解例如@RequestPart @ *** Attribute / s等等,不是很常用。

猜你喜欢

转载自blog.csdn.net/tony_java_2017/article/details/84134111