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 }
  • 相关阅读:
    hdu 2554 最短路 (dijkstra)
    hdu 1217 Arbitrage (spfa)
    盘点:2018年双11背后的蚂蚁核心技术
    跨境物流链路怎么做?菜鸟工程师打造了全球通关“神器”
    用简单代码看卷积组块发展
    分析core,是从案发现场,推导案发经过
    全图化引擎(AI·OS)中的编译技术
    开源 serverless 产品原理剖析
    手把手教您将 libreoffice 移植到函数计算平台
    在数据采集器中用TensorFlow进行实时机器学习
  • 原文地址:https://www.cnblogs.com/Eeexiang/p/9273929.html
Copyright © 2011-2022 走看看