19.springmvc对ajax的支持
@ResponseBody使用:将响应数据放入到响应体中
只要返回的数据是json数据即可!
1.导入jackson的包
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.5.0</version>
</dependency>
2.写控制类:
/**
将返回的数据放入到响应体中
如果返回的是对象就由jackson自动转换成json
**/
@Controller
public class AjaxTest {
@ResponseBody-------------->必须加上这个注解
@RequestMapping("/getPersonList")
public List<Person> getpersonList(){
Person P1=new Person("吴孟达",18,new Book("西游记",18.0,"吴承恩"));
Person P2=new Person("吴孟达",18,new Book("西游记",18.0,"吴承恩"));
Person P3=new Person("吴孟达",18,new Book("西游记",18.0,"吴承恩"));
Person P4=new Person("吴孟达",18,new Book("西游记",18.0,"吴承恩"));
List<Person> list=new ArrayList<>();
list.add(P1);
list.add(P2);
list.add(P3);
list.add(P4);
return list;
}
}
3.最重要的一点是:开启springmvc的无敌注解模式
<mvc:annotation-driven></mvc:annotation-driven>
4.发送请求:http://localhost:8080/getPersonList
返回的是:json字符串
[
{
"name": "吴孟达",
"age": 18,
"book": {
"bookName": "西游记",
"price": 18.0,
"autor": "吴承恩"
}
},
{
"name": "吴孟达",
"age": 18,
"book": {
"bookName": "西游记",
"price": 18.0,
"autor": "吴承恩"
}
},
{
"name": "吴孟达",
"age": 18,
"book": {
"bookName": "西游记",
"price": 18.0,
"autor": "吴承恩"
}
},
{
"name": "吴孟达",
"age": 18,
"book": {
"bookName": "西游记",
"price": 18.0,
"autor": "吴承恩"
}
}
]
5.Jackson的一些常用注解
1. @JsonIgnore注解:json格式化时会忽略该属性
public class Person {
private String name;
private Integer age;
@JsonIgnore
private Book book;
...
}
同样的请求输出:没有了book属性
[
{
"name": "吴孟达",
"age": 18
},
{
"name": "吴孟达",
"age": 18
},
{
"name": "吴孟达",
"age": 18
},
{
"name": "吴孟达",
"age": 18
}
]
2.@JsonFormat(pattern = "YYYY-mm-dd")格式化日期等等!
@RequestBody的用法
1.直接拿到请求的请求体
2.一般post方法才会有请求体,get请求的请求参是在路径上加的
3.控制类写法:
@Controller
public class AjaxTest {
@RequestMapping("/getPersonList")
public List<Person> getpersonList(@RequestBody String requestBody){
System.out.println("请求体:"+requestBody);
}
4.页面jsp写法:
必须是post请求:
<form action="/getPersonList" method="post">
账号:<input type="text" name="username">
密码:<input type="text" name="password">
<input type="submit" value="提交">
</form>
5.可以输出输入框中写的数据如下:
请求体:username=wmd&password=123456
ajax发送json字符串,后台控制器直接使用实体类来接收,加上@RequestBody可以自动进行转换