1、 –
@RestController = @Controller+@ResponseBody
2、
Controller 中url 各个参数使用
@PathVariable —–获取url中的数据
@RequestParam —-获取请求参数的值
@GetMapping,@POSTMapping ——组合注解
@RequestParam用法
@RequestParam
用来处理ContentType: 为 application/x-www-form-urlencoded编码的内容,不管用GET、POST方式提交都行。
@RequestBody
该注解常用来处理Content-Type: 不是application/x-www-form-urlencoded编码的内容,例如application/json, application/xml等;
@RequestBody
接收的是一个Json对象的字符串,而不是一个Json对象。在ajax请求往往传的都是Json对象,用 JSON.stringify(data)的方式就能将对象变成字符串。
通过@requestBody可以将请求体中的JSON字符串绑定到相应的bean上,当然,也可以将其分别绑定到对应的字符串上。
问题待求解1:
分别绑定到对应的字符串上。 如:@ResponseBody
public String doRegister(@RequestBody String username ,@RequestBody String password
问题待求解2:
内容编码方式application/x-www-form-urlencoded,application/json, application/xml分别在什么情况下使用;
前台代码:
$.ajax({
url : "${ctx}/rediscluster/delete.do",
data : JSON.stringify (' {"rname":rname}'),
type : "post",
dataType:"text",
contentType : "application/json",
success : function(data) {
if(data == 'OK'){
window.location = "${ctx}/system/redis/nodesmanager.jsp";
}
}
});
后台要是还用@RequestParam(“rname”)String rname接收参数的时候,会报错:String parameter ’ rname ’ is not present,前台返回400.又用另一种方式,request.getParameter(“rname”)来获得,同样发现,始终是null.无法接收到数据。
@PathVariable用法
(1)
(2)
单个参数
$.ajax({
url: '/users/delete/'+row.id,
// contentType: "application/x-www-form-urlencoded",//请求内容格式 默认是 application/json 自己根据格式自行服务端处理
data: {id: row.id},
dataType: "html",//期待返回数据类型为html
method: "post",
success: function (data) {
window.location.reload(data); //重新刷新页面
}
})
//controller
@RequestMapping(value = "/delete/{id}",method = RequestMethod.POST)
public String delete(@PathVariable("id") String id){
userMapper.delete(Long.parseLong(id));
return "redirect:/users/getAll";
}
@GetMapping,@POSTMapping –组合注解
@GetMapping=@RequestMapping(method = RequestMethod.GET)的缩写,是一个组合注解
@PostMapping=@RequestMapping(method = RequestMethod.POST)的缩写,是一个组合注解**
Spring4.3中引进了{@GetMapping、@PostMapping、@PutMapping、@DeleteMapping、@PatchMapping},来帮助简化常用的HTTP方法的映射,并更好地表达被注解方法的语义。