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

企业网站推广平台智能展厅

企业网站推广平台,智能展厅,网站app开发哪家好,企业网站开发研究现状一、前言 在上篇文章中#xff0c;我们使用了AOP思想实现日志记录的功能#xff0c;代码中采用了指定连接点方式#xff08;Pointcut(“execution(* com.nowcoder.community.controller..(…))”)#xff09;#xff0c;指定后不需要在进行任何操作就可以记录日志了…一、前言 在上篇文章中我们使用了AOP思想实现日志记录的功能代码中采用了指定连接点方式Pointcut(“execution(* com.nowcoder.community.controller..(…))”)指定后不需要在进行任何操作就可以记录日志了但是如果我们对某些controller不想记录日志就需要更改指定的切点灵活性较差。因此采用注解AOP方式实现更灵活的日志记录功能。 二、注解实现代码 package com.nowcoder.community.annotation;import java.lang.annotation.*;/*** author Janson* Description AOP日志记录注解* Date 2023/5/12* Target LogAspect 注解的作用目标* Retention 指定注解的保留时间*/Target(ElementType.METHOD) Retention(RetentionPolicy.RUNTIME) Documented public interface LogAspect {/*** title 自定义名称* description 自定义描述* return*/String title() default ;String description() default ; } 三、AOP日志记录类实现代码 定义切点织入点 execution(* com.nowcoder.community.controller..(…)) - 第一个 * 表示 支持任意类型返回值的方法 - com.nowcoder.community.controller 表示这个包下的类 - 第二个 * 表示 controller包下的任意类 - 第三个 * 表示 类中的任意方法 - (…) 表示方法可以拥有任意参数 可以根据自己的需求替换。 package com.nowcoder.community.aspect;import com.nowcoder.community.annotation.LogAspect; import org.aspectj.lang.JoinPoint; import org.aspectj.lang.ProceedingJoinPoint; import org.aspectj.lang.annotation.*; import org.springframework.stereotype.Component; import org.springframework.web.context.request.RequestContextHolder; import org.springframework.web.context.request.ServletRequestAttributes;/*** author Janson* Description AOP日志记录此方案不统一设置连接点 Pointcut而是采用注解方式指定连接的方法* Date 2023/5/12*/ Aspect Component public class LogAspectAnnotationTest {/*** 定义切点织入点* execution(* com.nowcoder.community.controller.*.*(..))* - 第一个 * 表示 支持任意类型返回值的方法* - com.nowcoder.community.controller 表示这个包下的类* - 第二个 * 表示 controller包下的任意类* - 第三个 * 表示 类中的任意方法* - (..) 表示方法可以拥有任意参数* 可以根据自己的需求替换。**/Before(value annotation(controllerLog))public void before(JoinPoint joinPoint, LogAspect controllerLog){String className joinPoint.getClass().getName();String methodName joinPoint.getSignature().getName();ServletRequestAttributes attributes (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();if (attributes null){return;}String ip attributes.getRequest().getRemoteHost();String requestURI attributes.getRequest().getRequestURI();String requestMethod attributes.getRequest().getMethod();String title controllerLog.title();String description controllerLog.description();System.out.println(title is title ,description is description);System.out.println(before excute ······);System.out.println(String.format(用户 [%s] 的请求路径为[%s], 请求方式为 [%s],请求类名为 [%s], 请求方法名为 [%s], ip,requestURI,requestMethod,className,methodName));}After(value annotation(controllerLog))public void after(JoinPoint joinPoint, LogAspect controllerLog){String className joinPoint.getClass().getName();String methodName joinPoint.getSignature().getName();ServletRequestAttributes attributes (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();if (attributes null){return;}String ip attributes.getRequest().getRemoteHost();String requestURI attributes.getRequest().getRequestURI();String requestMethod attributes.getRequest().getMethod();String title controllerLog.title();String description controllerLog.description();System.out.println(title is title ,description is description);System.out.println(after excute ······);System.out.println(String.format(用户 [%s] 的请求路径为[%s], 请求方式为 [%s],请求类名为 [%s], 请求方法名为 [%s], ip,requestURI,requestMethod,className,methodName));}AfterReturning(value annotation(controllerLog))public void afterReturning(JoinPoint joinPoint, LogAspect controllerLog){String className joinPoint.getClass().getName();String methodName joinPoint.getSignature().getName();ServletRequestAttributes attributes (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();if (attributes null){return;}String ip attributes.getRequest().getRemoteHost();String requestURI attributes.getRequest().getRequestURI();String requestMethod attributes.getRequest().getMethod();String title controllerLog.title();String description controllerLog.description();System.out.println(title is title ,description is description);System.out.println(afterReturning excute ······);System.out.println(String.format(用户 [%s] 的请求路径为[%s], 请求方式为 [%s],请求类名为 [%s], 请求方法名为 [%s], ip,requestURI,requestMethod,className,methodName));}AfterThrowing(value annotation(controllerLog),throwing e)public void afterThrowing(JoinPoint joinPoint, LogAspect controllerLog,Exception e){String className joinPoint.getClass().getName();String methodName joinPoint.getSignature().getName();ServletRequestAttributes attributes (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();if (attributes null){return;}String ip attributes.getRequest().getRemoteHost();String requestURI attributes.getRequest().getRequestURI();String requestMethod attributes.getRequest().getMethod();String title controllerLog.title();String description controllerLog.description();System.out.println(title is title ,description is description);System.out.println(afterThrowing excute ······ e.getMessage());System.out.println(String.format(用户 [%s] 的请求路径为[%s], 请求方式为 [%s],请求类名为 [%s], 请求方法名为 [%s],请求失败原因 [%s], ip,requestURI, requestMethod,className,methodName,e.getMessage()));}Around(value annotation(controllerLog))public void around(ProceedingJoinPoint joinPoint, LogAspect controllerLog) throws Throwable {String className joinPoint.getTarget().getClass().getName();String methodName joinPoint.getSignature().getName();System.out.println(className is : className . methodName is : methodName);ServletRequestAttributes attributes (ServletRequestAttributes)RequestContextHolder.getRequestAttributes();if (attributes null){return;}// 请求ipString ip attributes.getRequest().getRemoteHost();// 请求路径String requestURI attributes.getRequest().getRequestURI();// 请求方法String requestMethod attributes.getRequest().getMethod();String title controllerLog.title();String description controllerLog.description();System.out.println(String.format(用户 [%s] 的请求路径为[%s], 请求方式为 [%s],请求类名为 [%s], 请求方法名为 [%s], ip,requestURI,requestMethod,className,methodName));Object obj null;try {obj joinPoint.proceed();} catch (Throwable e) {System.out.println(我捕获了异常);throw new RuntimeException(执行失败,e);}System.out.println(String.format(用户 [%s] 的请求路径为[%s], 请求方式为 [%s],请求类名为 [%s], 请求方法名为 [%s], ip,requestURI,requestMethod,className,methodName));System.out.println(around excute after ········);} }
http://www.w-s-a.com/news/61547/

相关文章:

  • 网站建设与管理考查方案上海公司免费起名
  • 哪个网站做h5好做汽车网站
  • 汝州网站制作住房和城乡建设部官网进行查询
  • 怎么做整人点不完的网站获取网站访客qq号码源码
  • 自建网站软件网站如何减少404跳转
  • 我想学制作网站吗公司起名网站十大排名
  • 广州白云手机网站建设淘宝店铺怎么推广
  • 青海省住房与城乡建设厅网站珠海高端网站制作公司
  • 深圳个性化建网站公司简便网站建设
  • 网站安全狗十大免费ppt网站在线
  • 进网站后台显示空白图片模板 网站源码
  • dedecms 英文网站怎么在网站上做模式题库
  • 轻网站怎么建立国外做评论的网站
  • 拉米拉网站建设乐清网站网站建设
  • 获取网站全站代码申请免费域名的方法
  • 网站制作建设公司哪家好wordpress仪表盘打不开
  • 最佳网站制作模板用手机能创建网站吗
  • 只做黑白摄影的网站网站建设好后给领导作介绍
  • 移动手机网站建设如何做网站地图视频
  • 手工业网站怎么做成都酒吧设计公司
  • .net 网站生成安装文件目录重庆网站建设沛宣网络
  • 怎么做钓鱼网站吗百度免费域名注册网站
  • 如何给网站做外部优化今年国内重大新闻
  • 有没有做生物科技相关的网站弄一个app大概多少钱
  • 五金加工东莞网站建设怎么做网页跳转
  • 淄博网站优化价格wordpress没有小工具
  • 自己搭建服务器做视频网站wordpress发布文章 发布
  • php仿博客园网站阅读分享网站模板
  • 网站宣传的劣势域名注册长沙有限公司
  • 怎样联系自己建设网站企业怎样做好网站建设