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 }
  • 相关阅读:
    Solution: Win 10 和 Ubuntu 16.04 LTS双系统, Win 10 不能从grub启动
    在Ubuntu上如何往fcitx里添加输入法
    LaTeX 笔记---Q&A
    Hong Kong Regional Online Preliminary 2016 C. Classrooms
    Codeforces 711E ZS and The Birthday Paradox
    poj 2342 anniversary party
    poj 1088 滑雪
    poj 2479 maximum sum
    poj 2481 cows
    poj 2352 stars
  • 原文地址:https://www.cnblogs.com/Eeexiang/p/9273929.html
Copyright © 2011-2022 走看看