SpringBoot打印POST请求原始入参body体的过程
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,本篇内容主要讲解"SpringBoot打印POST请求原始入参body体的过程",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"SpringBoot打印POS
千家信息网最后更新 2025年01月19日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(); Enumerationenu = 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安全错误
数据库的锁怎样保障安全
cscs软件开发
网易我的世界服务器外挂下载地址
国家政治与网络安全
互联网科技公司盈利渠道
济南 云服务器
山东智小堂网络技术有限公司
蒲公英软件开发公司
服务器机柜布局
软件开发工程师能挂靠么
广东互联网养老软件开发公司
网络安全员考试报名时间
拾柒网络技术
网络安全宣传班会活动
无线网络技术课程编码
网络安全上市龙头股票
锁屏软件开发流程图
云服务器加带宽多少钱
河西区项目网络技术不二之选
2021年最好的网络安全股
文件服务器配置实施方案怎么写
大连服务器托管
服务器如何访问redis
六安方正网络技术有限公司
电子科大网络安全素养
时间序列数据库 比较
工业网络安全企业
移动互联应用软件开发国赛
软件开发中前端开发指什么
疾风之刃最新服务器
编程软件开发工资待遇