Spring Boot 前后端交互及参数传递

前后端交互的过程我觉得不管是前端还是后端都需要了解一点。

一、首先是前端发送请求:(我只了解了一点 ajax)

1、服务器端大多数情况下会以 JSON 对象作为响应数据的格式。

2、无论是请求参数还是响应内容、如果是对象类型,最终都会被转换为对象字符串进行传输。

3、将 JSON 字符串转换为 JSON 对象 JSON.parse(JSON_String),将 JSON 对象转换为 JSON 字符串 JSON.stringify()。

4、两种请求参数格式 1、'application/x-www-form-urlencoded',2、'application/json'。

      第一种格式为:'name=apple&age=20',第二种格式为:{name : 'apple',age : 20}。

5、get 请求方式不能提交 json 对象数据格式。

6、Ajax 错误处理
Ⅰ、网络畅通,服务器端能接受到请求,服务器端返回的结果不是预期结果。(判断服务器的返回的状态码,分别进行处理)
Ⅱ、网络畅通,服务器没有接受到请求,返回 404 状态码。(请求地址错误)
Ⅲ、网络畅通,服务器端能接受到请求,服务器返回 500 状态码。(服务器端错误)
Ⅳ、网络中断,请求无法发送到服务器。

7、jQuery 中的 ajax 方法

$.ajax({
        type:'get', // type:'post'
        url:'http://localhost:8080/login',
        data:{uname:'apple',pwd:'123456'}, // data:'uname=apple&pwd=123456' 
        contentType:'application/x-www-form-urlencoded, // application/json
        beforeSend:function(){},
        success:function(response){},
        error:function(response){}
    });

8、script 中调用 ajax

<script>
    $('#btn').on('click',function(){
        $.ajax({})
    });
</script>

9、serialize 方法:将表单重点数据自动拼接成字符串类型的参数

var params = $('#form').serialize() // 'uname=apple&pwd=123456'

10、$.get()、$.post() 方法:

$.get('/login','uname=apple&pwd=123456',function (response){})
$.post('/login','uname=apple&pwd=123456',function(response){})

二、其次后端返回数据的函数是类似于这样的:

private ObjectMapper objectMapper = new ObjectMapper();
(HttpServletRequest request, HttpServletResponse response)->{
    Map<String,Object> data = new HashMap<>();
    data.put("result", "success");
    response.setContentType("application/json;charset=utf-8");
    response.getWriter().write(objectMapper.writeValueAsString(data));
}

三、前端接受数据

success:function(response){
    console.log(response.result)
}

四、通过 ajax 的 success() 函数接受返回的数据会导致页面不跳转的问题

window.location.href='/index'

五、Spring 控制器获取参数

1、@RequestParam 方式:

@PostMapping("/myInfo")
public String showInfo(@RequestParam("name") String name){
    Reader reader = repository.findReaderByName(name);  
    return "infomation";
}

2、@RequestParam 方式,带默认值

@PostMapping("/myInfo")
public String showInfo((value="name",defaultValue="anonymous") String name){
    Reader reader = repository.findReaderByName(name);  
    return "infomation";
}

3、{} 占位符方式,路径变量

@PostMapping("/{name}") // 若方法的参数名和占位符名称相同,则可以省略@PathVariable 中的 value属性
public String showInfo(@PathVariable("name") String name){
    Reader reader = repository.findReaderByName(name);  
    return "infomation"
}  

六、后台通过 Model 传递数据和前端读取 Model 传过来的数据(只知道如何传,不知道如何读) 

七、以上内容仅是本人刚学的笔记,如有错误,欢迎指正!希望大佬能告知第六部分内容,谢谢!

原文地址:https://www.cnblogs.com/M-Anonymous/p/13070253.html