当前位置: 首页 > news >正文

企业网站制作费做分录互联网营销师培训课程

企业网站制作费做分录,互联网营销师培训课程,背景图片素材,广东省级建设主管部门网站问题记录:测试环境接口报错,日志里没有请求参数等信息,于是写了一个切面,但切面中获取不到 request的请求体,因为 post 请求体只能被消费一次,于是找解决办法 解决方法 既然 request 被消费了导致对应的请…

问题记录:测试环境接口报错,日志里没有请求参数等信息,于是写了一个切面,但切面中获取不到 request的请求体,因为 post 请求体只能被消费一次,于是找解决办法

解决方法

既然 request 被消费了导致对应的请求体没了,虽然 request 没了,但接收参数的实体类还在

解决:LocalVariableTableParameterNameDiscoverer.getParameterNames(Method method)
解释:见名知意, “本地变量表” 也就是常说的 局部变量表,获取对应请求参数
源码中的流程:获取方法所属的类->反射获取字节码->解析字节码获取->n部操作获取参数(无非是解析字节码)
脑子发热在想:请求一直在发,局部变量表的参数也会一直改变,并发环境下是否存在问题?
   没有问题,获取参数名称的过程是基于字节码的静态分析,即使同时处理 n 个请求,在那一刻的字节码是不会改变的

切面类

@Slf4j
@Aspect
@Component
public class ErrorLoggingAspect {@Pointcut("@annotation(com.test.conf.aspect.anon.ErrorLogging)")public void loggingAnon() {}@AfterThrowing("loggingAnon()")public void doAfterThrowing(JoinPoint joinPoint) throws IOException {// 接收到请求,记录请求内容ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();HttpServletRequest request = attributes.getRequest();MethodSignature signature = (MethodSignature) joinPoint.getSignature();String requestInfo = getRequestInfo(joinPoint,request,signature);BufferedWriter writer = new BufferedWriter(new FileWriter("/home/www/log/errorData.log", true));writer.write(requestInfo);writer.newLine();writer.newLine();writer.flush();}private String getRequestInfo(JoinPoint joinPoint, HttpServletRequest request, MethodSignature signature) {StringBuffer info = new StringBuffer();Method method = signature.getMethod();// 记录下请求内容info.append("异常时间:").append(DateUtil.format(new Date(),"yyyy-MM-dd HH:mm:ss"));info.append("\n请求IP  : ").append(request.getRemoteAddr()).append("\n请求类型 :").append(request.getMethod()).append("\n请求URL : ").append(request.getRequestURI());if ("POST".equals(request.getMethod())) {LocalVariableTableParameterNameDiscoverer u = new LocalVariableTableParameterNameDiscoverer();String[] paramNames = u.getParameterNames(method);//方法 1 请求的方法参数值 JSON 格式 null不显示if (joinPoint.getArgs().length > 0) {Object[] args = joinPoint.getArgs();for (int i = 0; i < args.length; i++) {//请求参数类型判断过滤,防止JSON转换报错if (args[i] instanceof HttpServletRequest || args[i] instanceof HttpServletResponse || args[i] instanceof MultipartFile) {continue;}info.append("\n请求参数").append(paramNames[i]).append(" :").append(JSON.toJSONString(args[i]));}}} else {//请求的方法参数值 兼容fromDate格式和JSON格式Object[] args = joinPoint.getArgs();// 请求的方法参数名称 显示所有字段 值为null也显示该字段LocalVariableTableParameterNameDiscoverer u = new LocalVariableTableParameterNameDiscoverer();String[] paramNames = u.getParameterNames(method);if (args != null && paramNames != null) {StringBuilder params = new StringBuilder();for (int i = 0; i < args.length; i++) {//请求参数类型判断过滤,if (args[i] instanceof HttpServletRequest || args[i] instanceof HttpServletResponse || args[i] instanceof MultipartFile) {continue;}params.append(" ").append(paramNames[i]).append(": ").append(args[i]).append(",");}info.append("\n请求参数").append(params);}}return info.toString();}
}
http://www.yidumall.com/news/21790.html

相关文章:

  • php网站开发几技术难点临沂seo建站
  • 文本网站开发英文文献交换免费连接
  • 视频网站做视频节目赚钱吗智能优化网站
  • 广州哪家做网站价格好做百度seo
  • 做盆栽奶茶店网站营销软文广告
  • 漂流瓶做任务网站网站seo优化方案设计
  • 如何做企业网站的排名建网站设计
  • 数码产品在哪里做网站线上营销策划案例
  • 凡科网账号怎么注销seo排名需要多少钱
  • 苏州市住房和城乡建设局投折网站长沙seo技术培训
  • 云南城乡建设厅网站站长统计app最新版本2023
  • 课程网站开发开题报告seo外包资讯
  • 西部数据网站建设河北百度seo
  • 安康企业网站建设价格百度最新推广产品
  • 白领兼职做网站百度添加到桌面
  • wordpress相册标签西安网站优化公司
  • 青岛seo宁波seo网络推广多少钱
  • 四川做网站的公司哪家好网站排名优化师
  • wordpress花园网站一站式媒体发稿平台
  • 做电影网站怎么批量去水印百度人工服务热线
  • 可以接单做3d网站常见的营销方式有哪些
  • 怎样做企业文化网站恩施seo整站优化哪家好
  • 做视频教学网站如何做优化清理大师
  • 织梦手机端网站字体重叠上海专业seo服务公司
  • 网站做的好不好数据舆情分析系统
  • 400电话安装佛山营销网站建设进入百度搜索首页
  • 国外做珠宝的网站有哪些摘抄一则新闻
  • 现在标书都从哪个网站下载网络营销有哪些推广平台
  • 深圳市网站推广公司百度收录方法
  • 公司做网站让我们销售百度seo排名优化教程