关于@RequestBody 、@ResponseBody、@RequestMapping、@RequestParam等的一点理解和整理
@RequestBody
接收的参数是来自requestBody中,即请求体。
一般用于处理非 Content-Type: application/x-www-form-urlencoded编码格式的数据,
比如:application/json、application/xml等类型的数据。就application/json类型的数据而言,
使用注解@RequestBody可以将body里面所有的json数据传到后端,后端再进行解析。
GET请求中,因为没有HttpEntity,所以@RequestBody并不适用。
POST请求中,通过HttpEntity传递的参数,必须要在请求头中声明数据的类型Content-Type,SpringMVC通过使用
HandlerAdapter 配置的HttpMessageConverters来解析HttpEntity中的数据,然后绑定到相应的bean上。
@ResponseBody
@ResponseBody的作用其实是将java对象转为json格式的数据。
@responseBody注解的作用是将controller的方法返回的对象通过适当的转换器转换为指定的格式之后,写入到response对象的body区,通常用来返回JSON数据或者是XML数据或者文本字符串。
注意:在使用此注解之后不会再走视图处理器,而是直接将数据写入到输入流中,他的效果等同于通过response对象输出指定格式的数据。比如response.getWriter().println("Login Success!");
本身@ResponseBody底层是通过response.getwriter()方法将数据写回前台的
@ResponseBody是作用在方法上的,@ResponseBody 表示该方法的返回结果直接写入 HTTP response body 中,一般在异步获取数据时使用【也就是AJAX】
@RequestMapping
@RequestMapping 是 Spring Web 应用程序中最常被用到的注解之一,在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,这也是在springmvc中用的最多的注解吧。
。这个注解会将 HTTP 请求映射到 MVC 和 REST 控制器的处理方法上。
@RequestMapping(value="/login")或
@RequestMapping("/login")
如果method 不写的话,默认GET、POST都支持,根据前端方式自动适应
这点跟@GetMapping和@PostMapping有区别。
@GetMapping 用于将HTTP GET请求映射到特定处理程序方法的注释。
具体来说,@GetMapping是一个作为快捷方式的组合注释@RequestMapping(method = RequestMethod.GET)。
@PostMapping 用于将HTTP POST请求映射到特定处理程序方法的注释。
具体来说,@PostMapping是一个作为快捷方式的组合注释@RequestMapping(method = RequestMethod.POST)。
此外还有@PutMapping,@PatchMapping,@DeleteMapping同上
所以一般情况下都是用@RequestMapping(method=RequestMethod.)即可
@RequestParam
- 请求参数部分处理
@RequestParam接收的参数是来自HTTP请求体或请求url的QueryString中。
RequestParam可以接受简单类型的属性,也可以接受对象类型。
@RequestParam有三个配置参数:
1,required 表示是否必须,默认为 true,必须。
2,defaultValue 可设置请求参数的默认值。
3,value 为接收url的参数名(相当于key值)。
@RequestParam用来处理 Content-Type 为 application/x-www-form-urlencoded 编码的内容,Content-Type默认为该属性,也可以接收application/json。@RequestParam也可用于其它类型的请求,例如:POST、DELETE等请求。
RequestParam有如下四种写法:
1,
public String logincheck2(@RequestParam(name = "username") String username,
@RequestParam(name = "password") String password)
2,这种最简单,都不需要这个注解即可以获取到前端的值。
public String logincheck(String username,String password){}
3,
public String doLogin(@RequestParam(defaultValue="") String username,
@RequestParam(defaultValue="") String password,
@RequestParam(defaultValue="0") int userType,
@RequestParam(defaultValue="") String verifyCode, HttpSession session)
4,
public String logincheck2(@RequestParam("username") String username,
@RequestParam("password") String password)
相关文章
- 关于同步、异步与阻塞、非阻塞的理解
- 关于define('DISCUZ_ROOT', substr(dirname(__FILE__), 0, -7));的理解
- 关于Volatile关键字的一点个人理解
- 关于支持向量机中的函数距离和几何距离的理解
- 关于 MySQL 的 boolean 和 tinyint(1)
- 关于问题 SAP ABAP ME2O 事物码如何(是否可以)打印发货单?如何自己找到答案
- 关于 Node.js scoped module 的一些理解
- 关于SAP Spartacus ManageUnitsListComponent的一些试错
- 关于Visual Studio Code里进行SAP UI5开发的代码自动完成功能
- Atitit 关于微服务的思考与理解 attilax总结 1.1. 架构的历史 微服务发展历史 Web》soa》msa1 1.2. 微服务最大特点 独立部署1 2. 微服务的优点1 2.1.
- 关于SAP Fiori用户管理资料的一个问题
- 关于 Node.js scoped module 的一些理解
- 关于 JavaScript 事件循环 Event Loop 的一些理解
- Android修行手册 - 关于系统中是否开启定位及定位模式的判断
- 关于Ubuntu的Unable to locate package无法更新源问题解决方案
- 关于git的理解2
- [深入理解SSD 为SSD编程]:总结—每个程序员都应该了解的关于固态硬盘的知识
- 关于对自动化测试的理解:目的与本质(点工必看)
- Promise - (六)关于then参数回调函数的缓存位置理解
- 关于SpringMVC之认识Validation