SpringMvc请求注解@RequestBody请求体
@PathVaribale@Req。。。
⼀、@RequestBody请求体
注意请求体只有form表单才有,⽽对于链接来说不使⽤
1)、在Controller中写
洪恩少儿英语
@RequestBody String body是基本⽤法
另外可以封装对象@RequestBody Employee employee是⾼级⽤法
@requestBody接收的是前端传过来的json字符串
写在参数位置
@RequestMapping("/testRequestBody")
public String testRequestBody(@RequestBody Employee employee){
System.out.println("请求体:"+employee);
return "success";
助理会计师考试科目
}
2)、在页⾯中写,$.ajax();//js对象(object)转json(string)
<%@ page language="java" contentType="text/html; chart=UTF-8"
pageEncoding="UTF-8"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "www.w3/TR/html4/loo.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; chart=UTF-8">
<title>Inrt title here</title>
<%
pageContext.tAttribute("ctp", ContextPath());
%>
</head>
<script type="text/javascript" src="scripts/jquery-1.9.1.min.js"></script>
<body>
<form action="${ctp }/test02" method="post"
enctype="multipart/form-data">
<input name="urname" value="tomcat"/><input name="password"
value="123456"><input type="file" name="file"/><input
type="submit"/>
</form>
<a href="${ctp }/testRequestBody">ajax发送json数据</a>
</body>
<script type="text/javascript">
$("a:first").click(function() {
pupil的音标
//点击发送ajax请求,请求带的数据是json
var emp = {
lastName : "张三",
email : "",雅思官网打不开
gender : 0
ipad3图片};
/
/alert(typeof emp);
//js对象(object)转json(string)
var empStr = JSON.stringify(emp);
//alert(typeof empStr);
$.ajax({
url : '${ctp}/testRequestBody',
type : "POST",
data : empStr,
contentType : "application/json",
success : function(data) {
alert(data);
}
});
return fal;初次见面英语怎么说
});
</script>
</html>
⼆、@PathVariable获取路径参数(这个要求映射地址是restful 风格)
看⼀个例⼦,如果我们需要获取Url=localhost:8080/hello/id/name中的id值和name值,实现代码如下:
@RestController
public class HelloController {
@RequestMapping(value="/hello/{id}/{name}",method= RequestMethod.GET)
public String sayHello(@PathVariable("id") Integer id,@PathVariable("name") String name){
return "id:"+id+" name:"+name;
}
}
以上,通过@PathVariable注解来获取URL中的参数时的前提条件是我们知道url的格式时怎么样的。只有知道url的格式【/传参(value后台指定了key)】【/并列传参】,我们才能在指定的⽅法上通过相同的格式获取相应位置的参数值。
⼀般情况下,url的格式为:localhost:8080/hello?id=98,【?⽤来传第⼀个参数(key=value)】【&并列传参】这种情况下该如何来获取其id 值呢,这就需要借助于@RequestParam来完成了
三、@RequestParam
后端不以表单形式从前端获取值
1.在浏览器中输⼊地址:localhost:8080/hello?id=1000,可以看到如下的结果:
2.当我们在浏览器中输⼊地址:localhost:8080/hello?id ,即不输⼊id的具体值,此时返回的结果为null。具体测试结果如下:
3.但是,当我们在浏览器中输⼊地址:localhost:8080/hello ,即不输⼊id参数,则会报如下错误:
@RequestParam注解给我们提供了这种解决⽅案,即允许⽤户不输⼊id时,使⽤默认值,具体代码如下:
@RestController
生活大爆炸第六季24
public class HelloController {
@RequestMapping(value="/hello",method= RequestMethod.GET)
//required=fal 表⽰url中可以不穿⼊id参数,此时就使⽤默认参数
public String sayHello(@RequestParam(value="id",required = fal,defaultValue = "1") Integer id){
return "id:"+id;
}
}
四、@PathVariable和@RequestParam⼀起⽤
@Autowired
DomOwnerResService domOwnerResService2;
@ApiOperation(value = "查询资源种类树max", notes = "针对属主拥有的资源的查询操作")分科教学
english resume
@RequestMapping(value="/queryallrestype/{domId}",method = RequestMethod.GET)
public ResultUtils queryAllRes(@PathVariable(value="domId",required = true) Integer domId,
@RequestParam(value="ownerId",required = true) Integer ownerId,
@RequestHeader(value = "Validate", required = true) String validate){
}
对于请求地址Request URLitsallgay
localhost:8090/queryallrestype/1?ownerId=1
可以看到⽤了@PathVaribale的参数都⽤[/]并列传参且不⽤写key,
后⾯⽤了@ResquestParam的参数第⼀个⽤[?]传参
补充⼀点:
如果有多个@ResquestParam
后⾯并列⽤&传参:如localhost:8090/queryallrestype/1?ownerId=1&xxx=2&yyy=3