SpringBoot打印POST请求原始入参body体的过程
发表于:2025-11-09 作者:千家信息网编辑
千家信息网最后更新 2025年11月09日,本篇内容主要讲解"SpringBoot打印POST请求原始入参body体的过程",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot打印POS
千家信息网最后更新 2025年11月09日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安全错误
数据库的锁怎样保障安全
浏览器f12中的数据库
战地五最硬核的服务器
大访问量下数据库处理方案
网络安全建设咨询报告
双11gpu服务器包年特价
数据库怎样添加窗体
天眼云服务器怎么下载浏览器
软件开发人工成本 账
办公软件开发跟踪
护苗网络安全读后感350
网络安全 社会发展趋势
搞程序设计软件开发用什么电脑
计算机软件开发属于
软件开发师将来的梦想
服务器进不去程序怎么办
论文数据库系统更新
计算机网络安全攻击的步骤
深圳信息网络技术公司
为什么联盟不同服务器不能一起玩
网络安全四月月报
山东省公安厅淄博网络安全员
上位机用什么软件开发qt
网络优化网络安全
嘉昆太共筑网络安全防线
手机如何成为文件共享服务器
eviews 数据库
云计算服务器的概念是什么
绍兴设备管理服务平台软件开发
数据库跟应用连接
腾讯和阿里服务器dns