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可以自动进行转换

posted @ 2022-05-08 22:18  努力的达子  阅读(31)  评论(0编辑  收藏  举报