SpringBoot打印POST请求原始入参body体的过程
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本篇内容主要讲解"SpringBoot打印POST请求原始入参body体的过程",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot打印POS
千家信息网最后更新 2026年11月03日SpringBoot打印POST请求原始入参body体的过程
本篇内容主要讲解"SpringBoot打印POST请求原始入参body体的过程",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot打印POST请求原始入参body体的过程"吧!
目录
SpringBoot打印POST请求原始入参body体
1、首先定义过滤器配置
2、实现1中的过滤器
Post接收不到body里的参数(对象参数)
检查注解
检查实体
检查Content-Type
SpringBoot打印POST请求原始入参body体
1、首先定义过滤器配置
package com.choice.o2o.device.common.config; import com.choice.o2o.device.common.filter.LogFilter;import org.springframework.boot.web.servlet.FilterRegistrationBean;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration; @Configurationpublic class FilterConfig { @Bean public FilterRegistrationBean registFilter() { FilterRegistrationBean registration = new FilterRegistrationBean(); registration.setFilter(new LogFilter()); registration.addUrlPatterns("/*"); registration.setName("LogFilter"); registration.setOrder(1); return registration; }}2、实现1中的过滤器
package com.choice.o2o.three.code.config.log; import lombok.extern.slf4j.Slf4j;import org.springframework.core.Ordered;import org.springframework.web.filter.OncePerRequestFilter;import org.springframework.web.util.ContentCachingRequestWrapper;import org.springframework.web.util.ContentCachingResponseWrapper;import org.springframework.web.util.WebUtils; import javax.servlet.FilterChain;import javax.servlet.ServletException;import javax.servlet.http.HttpServletRequest;import javax.servlet.http.HttpServletResponse;import java.io.IOException;import java.io.UnsupportedEncodingException;import java.util.Enumeration; @Slf4jpublic class LogParamFilter extends OncePerRequestFilter implements Ordered { // put filter at the end of all other filters to make sure we are processing after all others private int order = Ordered.LOWEST_PRECEDENCE - 8; public static final String SPLIT_STRING_M = "="; public static final String SPLIT_STRING_DOT = ", "; @Override public int getOrder() { return order; } @Override protected void doFilterInternal(HttpServletRequest request, HttpServletResponse response, FilterChain filterChain) throws ServletException, IOException { ContentCachingRequestWrapper wrapperRequest = new ContentCachingRequestWrapper(request); ContentCachingResponseWrapper wrapperResponse = new ContentCachingResponseWrapper(response); String urlParams = getRequestParams(request); filterChain.doFilter(wrapperRequest, wrapperResponse); String requestBodyStr = getRequestBody(wrapperRequest); log.info("params[{}] | request body:{}", urlParams, requestBodyStr); String responseBodyStr = getResponseBody(wrapperResponse); log.info("response body:{}", responseBodyStr); wrapperResponse.copyBodyToResponse(); } /** * 打印请求参数 * * @param request */ private String getRequestBody(ContentCachingRequestWrapper request) { ContentCachingRequestWrapper wrapper = WebUtils.getNativeRequest(request, ContentCachingRequestWrapper.class); if (wrapper != null) { byte[] buf = wrapper.getContentAsByteArray(); if (buf.length > 0) { String payload; try { payload = new String(buf, 0, buf.length, wrapper.getCharacterEncoding()); } catch (UnsupportedEncodingException e) { payload = "[unknown]"; } return payload.replaceAll("\\n", ""); } } return ""; } /** * 打印返回参数 * * @param response */ private String getResponseBody(ContentCachingResponseWrapper response) { ContentCachingResponseWrapper wrapper = WebUtils.getNativeResponse(response, ContentCachingResponseWrapper.class); if (wrapper != null) { byte[] buf = wrapper.getContentAsByteArray(); if (buf.length > 0) { String payload; try { payload = new String(buf, 0, buf.length, wrapper.getCharacterEncoding()); } catch (UnsupportedEncodingException e) { payload = "[unknown]"; } return payload; } } return ""; } /** * 获取请求地址上的参数 * * @param request * @return */ public static String getRequestParams(HttpServletRequest request) { StringBuilder sb = new StringBuilder(); Enumeration enu = request.getParameterNames(); //获取请求参数 while (enu.hasMoreElements()) { String name = enu.nextElement(); sb.append(name + SPLIT_STRING_M).append(request.getParameter(name)); if (enu.hasMoreElements()) { sb.append(SPLIT_STRING_DOT); } } return sb.toString(); }} Post接收不到body里的参数(对象参数)
检查注解
@ResponseBody@RequestBody
检查实体
接收实体类,set、get方法是否正确
检查Content-Type
是否是application/json
到此,相信大家对"SpringBoot打印POST请求原始入参body体的过程"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
参数
检查
原始
过滤器
过程
实体
内容
对象
方法
注解
学习
配置
实用
更深
兴趣
地址
实用性
实际
操作简单
更多
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
华服互联网科技靠谱吗
互联网扶贫科技
港股互联网科技股
喔噻互联网科技
深圳互联网络科技有限公司
金融科技和互联网金融
安控科技rtu产品工业互联网
北京大学互联网科技怎么样
广州慧亚互联网科技怎么样
承德科技产业互联网发展
现代互联网科技股
恒生互联网科技指数跳水
互联网科技人工智能实验室
互联网金融科技名词解释
互联网科技年终奖
互联网科技融合创新
福州德业互联网科技
互联网时代科技型公司的机会
艺电能源互联网科技有限公司招聘
互联网金融金融科技
上海睿民互联网科技有限公司
互联网科技的英文
亿策互联网科技
阿里互联网科技公司
互联网在线教育科技创业
云南省自由互联网科技有限公司
互联网科技新闻
恒生科技指数 中概互联网
黑龙江互联网科技公司
六子台科技互联网展会