ajax和springmvc的请求响应原理

Posted lirenhe

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ajax和springmvc的请求响应原理相关的知识,希望对你有一定的参考价值。

1,四大重要部分:

  请求链接

  post请求和get请求

  请求参数形式

  响应内容形式

2,从springmvc的controller角度,controller能接收到请求的前提

  请求链接必须对应

  post和get请求方式必须对应

  请求参数形式必须对应

3,从springmvc的controller角度,controller能成功响应的前提

  请求中指明的响应内容形式必须和controller的produces指明的一致

  controller的@ResponseBody的有与无

  controller的setViewName的有与无

4,进一步说明

  post请求:请求参数形式有两类:一类是Form Data,提交的是Object对象;另一类是Json,提交的是json字符串

    From Data:(Object参数)可以在controller中使用@RequestParam和简单pojo方式接收

    Json:(json字符串)可以在controller中使用@RequestBody接收

  get请求:请求参数形式只有一类:query string parameter,会被设置到url后面

    query string parameter:(key/value)可以在controller中使用@RequestParam和简单pojo方式接收

5,jQuery的ajax方法:

  $.get :默认使用 GET 方式   (无Content-Type,附加到url后)  无指定响应内容形式,由controller决定

  $.post:默认使用 POST方式   传递附加参数时(Content-Type:application/x-www-form-urlencoded) 没有附加参数时(无Content-Type)      无指定响应内容形式,由controller决定

  $getJSON:默认使用 GET 方式(无Content-Type)  专门返回json(Content-Type:application/json)

  $load:默认使用 GET 方式(无Content-Type) - 传递附加参数时自动转换为 POST 方式(Content-Type:application/x-www-form-urlencoded)  无指定响应内容形式,由controller决定

6,总结

  请求方式关系请求参数形式:get请求不能发送json字符串和Form Data,导致没有content-type请求头

                  post请求能够发送Form Data和json字符串,对应的content-type是Content-Type:application/x-www-form-urlencoded和Content-Type:application/json

  请求参数形式关系后端controller的参数接收:Form Data可以由简单pojo和@RequestParam接收;json字符串只能使用@RequestBody接收

                      query string parameter可以由简单pojo和@RequestParam接收

以上是关于ajax和springmvc的请求响应原理的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记——SpringMVC处理响应数据;SpringMVC处理请求域响应乱码问题

如何从 Spring MVC 控制器返回对象以响应 AJAX 请求?

掌握SpringMVC如何接收请求数据和响应结果

SpringMVC的AJAX请求报406错误

http协议与响应请求原理

SpringMVC与Ajax交互