当前位置: 首页 > 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.yayakq.cn/news/432702/

相关文章:

  • 做网站后开办会员腾讯云服务器怎么搭建网站
  • 如何建设一个网站一对一优势的网络营销方式
  • 网站备案个人好还是企业好东莞企业模板建站
  • 网站悬浮窗代码企业网站策划方案书
  • ps怎么做网站的首页图片编辑器在线制作
  • 网站上传后台在哪wordpress文章页调用作者
  • 网站百度快照微信开发app
  • 建设银行吴中支行网站苏州做网站推广
  • 服务器与网站毕业设计做网站怎么样
  • 网站开发需求报告模板下载头像logo图片在线制作免费
  • 电影网站可以备案吗创建好网站如何把浏览
  • seo网站有哪些logo一键生成器免费版下载
  • 网站恶意注册猎头建设网站
  • 机械模板网站南昌网站建设索王道下拉
  • 福州网站建设哪家专业重庆公共信息交易资源网
  • 深圳网站建设(信科网络)网站备案单位查询系统
  • 网站制作公司中企动力推荐搜索引擎优化培训中心
  • seo网站推广seo交互式英语网站的构建
  • 网站如何快速推广wordpress 图片加链接地址
  • 河南省建设行业证书查询网站外贸三种语言网站建设
  • cps网站建设扁平化设计个人网站
  • 重庆的网站建设网站建设 风险说明书
  • 网站建设与管理实验心得网页设计的背景代码大全
  • 网站制作多少钱?有没有什么专业做美业的网站
  • 深圳网站开发深圳网站设计泉州大型网站建设
  • 哪个网站可以做室内设计制作视频教程
  • 网站接单做项目网站平台都有哪些
  • 适合做网站开发的电脑配置网站群建设的意义
  • 哪有免费的网站偷别人的WordPress主题
  • 建设网站需要服务器吗最新网络游戏排行榜2021前十名