java springboot 操作日志通过joinPoint 获取request请求的JSON数据,实测有效
这几天公司业务需求要弄一个操作日志,需要获取到用户请求的参数,在网上看了很多方法,在我这都没用,无奈看去别人写好的源码,总算找出来了。
因为要转化成JSON字符串,所以需要 用到JSON包,这里用的是阿里巴巴的:
-
<!-- 阿里JSON解析器 -->
-
<dependency>
-
<groupId>com.alibaba.fastjson2</groupId>
-
<artifactId>fastjson2</artifactId>
-
<version>2.0.26</version>
-
</dependency>
废话不多说,直接上源码(帮到各位请点赞支持一下吧):
-
/**
-
* 通过JoinPoint 获取请求参数JSON字符串并返回
-
*/
-
private String argsArrayToString(JoinPoint joinPoint)
-
{
-
-
Object[] paramsArray = joinPoint.getArgs();
-
String params = "";
-
if (paramsArray != null && paramsArray.length > 0)
-
{
-
for (Object o : paramsArray)
-
{
-
if (StringUtils.isNotNull(o) && !isFilterObject(o))
-
{
-
try
-
{
-
String jsonObj = JSON.toJSONString(o);
-
params = jsonObj.toString() " ";
-
}
-
catch (Exception e)
-
{
-
}
-
}
-
}
-
}
-
return params.trim();
-
}
-
-
-
-
/**
-
* 忽略敏感属性
-
*/
-
public PropertyPreExcludeFilter excludePropertyPreFilter(String[] excludeParamNames)
-
{
-
return new PropertyPreExcludeFilter().addExcludes(ArrayUtils.addAll(PropertyPreExcludeFilter.EXCLUDE_PROPERTIES, excludeParamNames));
-
}
-
-
/**
-
* 判断是否需要过滤的对象。
-
*
-
* @param o 对象信息。
-
* @return 如果是需要过滤的对象,则返回true;否则返回false。
-
*/
-
-
public boolean isFilterObject(final Object o)
-
{
-
Class<?> clazz = o.getClass();
-
if (clazz.isArray())
-
{
-
return clazz.getComponentType().isAssignableFrom(MultipartFile.class);
-
}
-
else if (Collection.class.isAssignableFrom(clazz))
-
{
-
Collection collection = (Collection) o;
-
for (Object value : collection)
-
{
-
return value instanceof MultipartFile;
-
}
-
}
-
else if (Map.class.isAssignableFrom(clazz))
-
{
-
Map map = (Map) o;
-
for (Object value : map.entrySet())
-
{
-
Map.Entry entry = (Map.Entry) value;
-
return entry.getValue() instanceof MultipartFile;
-
}
-
}
-
return o instanceof MultipartFile || o instanceof HttpServletRequest || o instanceof HttpServletResponse
-
|| o instanceof BindingResult;
-
}
其中 isFilterObject 方法用来过滤掉不用的参数,比如用户的密码等,根据业务需求可以删除。
拿到的数据样子如下:
{"id":1,"level":50,"name":"决热快","pageIndex":10,"pageSize":1,"pageSorts":[],"parentId":75,"sort":49,"type":37}
这篇好文章是转载于:学新通技术网
- 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
- 本站站名: 学新通技术网
- 本文地址: /boutique/detail/tanhgihiif
系列文章
更多
同类精品
更多
-
photoshop保存的图片太大微信发不了怎么办
PHP中文网 06-15 -
《学习通》视频自动暂停处理方法
HelloWorld317 07-05 -
word里面弄一个表格后上面的标题会跑到下面怎么办
PHP中文网 06-20 -
Android 11 保存文件到外部存储,并分享文件
Luke 10-12 -
photoshop扩展功能面板显示灰色怎么办
PHP中文网 06-14 -
微信公众号没有声音提示怎么办
PHP中文网 03-31 -
excel下划线不显示怎么办
PHP中文网 06-23 -
excel打印预览压线压字怎么办
PHP中文网 06-22 -
TikTok加速器哪个好免费的TK加速器推荐
TK小达人 10-01 -
怎样阻止微信小程序自动打开
PHP中文网 06-13