0%

Spring系列之SpringMVC

处理过的问题

Required request body is missing

一般都是@RequestBody注解的参数,而请求数据空;或者用postman的话,注意要这样选择参数:
image

What is difference between @RequestBody and @RequestParam?

image

postman请求时,如果Controller的方法出现参数接收不到为null

这个时候考虑是否PostMapping注解的方法参数是否为多个,如果多个的话用postman请求记得不要在Body选择为raw和json类型,可以选择form-data或者x-www-form-urlencoded。

@ResponseBody注解之后是在哪里将对象自动转成Json响应的

0 = {ManagedFilter@12664} “ManagedFilter{filterInfo=FilterInfo{filterClass=class org.springframework.boot.web.servlet.filter.OrderedCharacterEncodingFilter, name=’characterEncodingFilter’}}”
1 = {ManagedFilter@12662} “ManagedFilter{filterInfo=FilterInfo{filterClass=class org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter, name=’webMvcMetricsFilter’}}”
2 = {ManagedFilter@12658} “ManagedFilter{filterInfo=FilterInfo{filterClass=class org.springframework.boot.web.servlet.filter.OrderedHiddenHttpMethodFilter, name=’hiddenHttpMethodFilter’}}”
3 = {ManagedFilter@12656} “ManagedFilter{filterInfo=FilterInfo{filterClass=class org.springframework.boot.web.servlet.filter.OrderedFormContentFilter, name=’formContentFilter’}}”
4 = {ManagedFilter@12654} “ManagedFilter{filterInfo=FilterInfo{filterClass=class org.springframework.boot.web.servlet.filter.OrderedRequestContextFilter, name=’requestContextFilter’}}”
5 = {ManagedFilter@12652} “ManagedFilter{filterInfo=FilterInfo{filterClass=class org.springframework.boot.web.servlet.DelegatingFilterProxyRegistrationBean$1, name=’springSecurityFilterChain’}}”
6 = {ManagedFilter@12637} “ManagedFilter{filterInfo=FilterInfo{filterClass=class org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter, name=’httpTraceFilter’}}”

how to Configure HttpMessageConverters in Spring.
参考1

因为底层AbstractJackson2HttpMessageConverter调用了writeInternal方法默认通过jackson来做json解析,所以可以使用jackson的各种强大的注解,如:
Jackson注解翻译

Basic Knowledge

前端接口调用的入口

HttpServlet(无论tomcat还是undertow容器,都是继承了HttpServlet抽象类,通过service方法分发前端的Http请求的)
所以如果某个http请求出现了莫名其妙的问题,如果实在找不到原因,就可以从最原始的这个入口debug跟踪,一步步深入,最终肯定能解决问题的。

前端传进来的入参转换为Controller方法的入参过程

InvocableHandlerMethod.invokeForRequest方法

@InitBinder的使用

https://medium.com/stackavenue/how-to-use-initbinder-in-spring-mvc-ecb974a6884