zl程序教程

您现在的位置是:首页 >  其它

当前栏目

关于@RequestBody 、@ResponseBody、@RequestMapping、@RequestParam等的一点理解和整理

关于 理解 整理 一点 RequestBody RequestMapping RequestParam ResponseBody
2023-09-11 14:15:13 时间

@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)