ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

SpringMVC进阶

2021-07-17 18:01:16  阅读:175  来源: 互联网

标签:jackson 进阶 SpringMVC json ResponseBody ajax user id


1. ajax异步交互

springMVC默认使用MappingJackson2HttpMessageConverter对json数据进行格式转换,需要导入Jackson的包并同时配置处理器适配器和处理器映射器

   <!-- 导入Jackson包-->
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-databind</artifactId>
            <version>2.9.8</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-core</artifactId>
            <version>2.9.8</version>
        </dependency>
        <dependency>
            <groupId>com.fasterxml.jackson.core</groupId>
            <artifactId>jackson-annotations</artifactId>
            <version>2.9.0</version>
        </dependency>
<!-- 配置处理器适配器和处理器映射器 ,可以对json格式解析,进行了方法的增强-->
    <mvc:annotation-driven />
<%--
  Created by IntelliJ IDEA.
  User: Administrator
  Date: 2021/7/17
  Time: 17:19
  To change this template use File | Settings | File Templates.
--%>
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
<html>
<head>
    <title>ajax</title>
</head>
<body>
<script src="${pageContext.request.contextPath}/js/jquery-3.5.1.js"></script>
<button id="btn1">ajax异步处理</button>
<script>
    $("#btn1").click(function () {
    //请求地址
        let url ="${pageContext.request.contextPath}/ajax";
        // 请求数据
            let data='[{"id":1,"username":"张三"},{"id":2,"username":"李四"}]';
            $.ajax({
                type:'POST',
                url:url,
                data:data,
                contentType:'application/json:charset=utf-8',
                success:function (resp) {
                    alert(JSON.stringify(resp));
                }
            })
    })
</script>
</body>
</html>
  • @RequestBody:当使用ajax提交并制定contentType为json格式时,需要通过HttpMessageConverter接口将json格式转为对应的POJO对象
  • @ResponseBody:当将POJO对象返回时,通过HttpMessageConverter接口转换为制定的json,xml格式等,通过response响应给客户端
 @RequestMapping("/ajax")
    @ResponseBody
    public List<User> ajax(@RequestBody List<User> list){
        System.out.println(list);
        return list;
    }

2. RESTful

  • Restful是一种软件架构风格,提供了一组设计原则和约束条件,主要用于客户端和服务器交互类的软件,能更简洁更有层次的实现缓存机制
  • Restful风格的请求是使用“url+请求方式”表示一次请求目的的,HTTP协议中的操作方式为GET,POST,PUT,DELETE
客户端请求 原来风格URL地址 RESTful风格URL地址
查询所有 /user/findAll GET /user
根据ID查询 /user/findById?id=1 GET /user/{1}
新增 /user/save POST /user
修改 /user/update PUT /user
删除 /user/delete?id=1 DELETE /user/{1}
  • @PathVariable:用于接受RESTful请求地址中的占位符的值
  • @RestController=@Controller+@ResponseBody,简化开发,前端通过ajax与服务器进行异步交互,处理器将json数据返回
 @GetMapping("/user/{id}")// 等同于@RequestMapping(path = "/user/{id}",method = RequestMethod.GET)
    // @Controller + @ResponseBody 的作用等同于   @RestController
    public String find(@PathVariable Integer id){
        return "findbyId:"+id;
    }

    @PostMapping(value = "/user")
// @ResponseBody
    public String post() {
        return "post";
    }

    @PutMapping(value = "/user")
// @ResponseBody
    public String put() {
        return "put";
    }

    @DeleteMapping(value = "/user/{id}")
// @ResponseBody
    public String delete(@PathVariable Integer id) {
        return "delete:"+ id;
    }

 

标签:jackson,进阶,SpringMVC,json,ResponseBody,ajax,user,id
来源: https://www.cnblogs.com/forever-fate/p/15024420.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有