@param和@requestParam区别,@RequestParam主要作用是什么?
00-1010 @ RequestBody,@ RequestParam和@ Param Difference @ Param @ request body @ request Param @ request Param使用注意事项,比如下面这个接口拦截空参数的请求
目录
@RequestBody,@RequestParam和@Param区别
@Param是mybatis里的一个评论。当使用注释来简化xml配置时,@Param comment的作用是命名参数。参数命名后,可以根据名称获取参数值,并可以正确地将参数传入sql语句中。请看下面的例子:
公共接口映射器{ @Select(select s_id id,s_name name,class _ id classid from Student where s _ name=# { AAAA } and class _ id=# { bbbb } )公共学生选择(@Param(aaaa )字符串名称,@ Param( bbbb )int class _ id);@删除.@插入.}
@Param
@requestBody注释通常用于处理内容类型不是默认的application/x-www-form-URL编码的内容,例如application/json或application/xml。一般来说,经常用来处理应用/json类型。
请求体中的JSON字符串可以通过@requestBody绑定到对应的bean,当然也可以单独绑定到对应的字符串。
例如说以下情况:
$.ajax({url:/login ,type:POST ,data : { userName : admin , pwd , admin123} ,content-type : application/JSON charset=utf-8 ,success 3360 function(data){ alert(请求成功!);}});@ request mapping(/log in )public void log in(@ request body String userName,@ request body String pwd){ system . out . println(userName): pwd);}在这种情况下,JSON字符串中两个变量的值分别赋给两个字符串,但是假设我有一个用户类,有以下字段:
字符串用户名;字符串pwd那么以上参数可以改成以下形式:@requestBody user用户。这个表单将把JSON字符串中的值赋予User中相应的属性。
需要注意的是,JSON字符串中的key必须对应user中的属性名,否则将无法请求。
处理由HttpEntity传递的数据,http entity通常用于处理非内容类型: application/x-www-form-urlencoded格式的数据。
在GET请求中,因为没有HttpEntity,@RequestBody不适用。在POST请求中,通过HttpEntity传递的参数必须在请求头中声明数据类型Content-Type。SpringMVC通过使用HandlerAdapter配置的HttpMessageConverters解析HttpEntity中的数据,然后绑定到相应的bean。
00-1010用于为application/x-www-form-urlencoded处理由Content-Type:编码的内容。(在Http协议中,如果没有指定Content-Type,默认传递的参数是application/x-www-form-urlencoded类型)
Param可以接受简单类型或对象类型的属性。
本质上,Request.getParameter()中的键值参数映射是由Spring的ConversionService配置的,并转换成参数接收对象或字段。
在content-type : application/x-www-form-urlencoded的请求中,get模式下的queryString的值和post模式下的body data的值会被Servlet接受并转换成Request.getParameter()的参数集,所以@RequestParam可以得到。
@RequestBody
@RequestParam:将请求参数绑定到控制器的方法参数。此注释中需要一个属性,该属性指示是否包含该参数。默认值为true,表示请求路径必须包含参数。否则,将会报告一个错误。
但是用的时候不要出错。required=true可以检查请求是否包含该参数,但不能检查参数值是否为空。
@RequestParam
3358127 . 0 . 0 . 1:9802/API/Order/VR/TestRequestparam这个可以截取,因为param1在请求参数中不存在。
但是http://127 . 0 . 0 . 1:9802/API/order/VR/testrequestparam?Param1可以请求成功。
@RequestParam使用注意事项
还需要在参数中加 @Valid @NotBlank
如下所示:
以上个人经验,希望能给大家一个参考,也希望大家能支持盛行的IT。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。