zoukankan      html  css  js  c++  java
  • Controller层aop

    利用@Around通知修改Controller的返回值

    自定义一个注解@OperationBtn

    在切入点Controller上加上自定义注解

    接下来就是重点了,AspectJ写切面类,对该Controller 1 @Component
     2 @Aspect
     3 public class OperationBtnAspect {
     4 
     5     @Autowired
     6     private AppTableOperationServiceI appTableOperationService;
     7     
     8     
     9     @Around(value = "@annotation(anno)", argNames = "anno")
    10     public AjaxJson aroundMthod(ProceedingJoinPoint point, OperationBtn anno) throws Throwable{
    11         RequestAttributes ra = RequestContextHolder.getRequestAttributes();
    12         ServletRequestAttributes sra = (ServletRequestAttributes) ra;
    13         HttpServletRequest request = sra.getRequest();
    14         
    15         String url = request.getRequestURL().toString(); // http://localhost:8080/5U/appDataController.do (URL:返回的是完整的url,包括Http协议,端口号,servlet名字和映射路径,但它不包含请求参数。)
    16         String method = request.getMethod();  // POST
    17         String uri = request.getRequestURI();  // /5U/appDataController.do 
    18         String queryString = request.getQueryString();  // addOrUpdateData&operId=402881e8645f580501645f61202c0044&optId=402881e8645f580501645f61203d004c(返回url路径后面的查询字符串)
    19         queryString = queryString.substring(queryString.indexOf("operId"));
    20         queryString = queryString.substring(7,queryString.indexOf("&"));
    21         AppTableOperationEntity operationEntity = appTableOperationService.getEntity(AppTableOperationEntity.class, queryString);
    22         AjaxJson json = (AjaxJson) point.proceed();  //执行Controller中方法,得到返回值json
    23         if(json.isSuccess() && operationEntity !=null && operationEntity.getCallbackSucMsg() !=null){
    24             json.setMsg(operationEntity.getCallbackSucMsg());
    25         }else if(!json.isSuccess() && operationEntity !=null && operationEntity.getCallbackSucMsg() !=null){
    26             json.setMsg(operationEntity.getCallbackFailMsg());
    27         }
    28         return json;
    29     }
    30 }
  • 相关阅读:
    rabbitmq的安装和使用
    springboot之rabbitmq
    springboot之assembly的文件配置
    Android -- 真正的 高仿微信 打开网页的进度条效果
    香蕉云APP,2016下半年开发日记
    使用 Android Studio 检测内存泄漏与解决内存泄漏问题
    阿里云服务器上配置并使用: PHP + Redis + Mysql 从配置到使用
    PHP 获取 特定时间范围 类
    真实记录疑似Linux病毒导致服务器 带宽跑满的解决过程
    -Android -线程池 批量上传图片 -附php接收代码
  • 原文地址:https://www.cnblogs.com/Eeexiang/p/9273929.html
Copyright © 2011-2022 走看看