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 }
  • 相关阅读:
    NSString的几种常用方法
    ios页面间传递参数四种方式
    ios category类别的使用
    iOS: 枚举类型 enum,NS_ENUM,NS_OPTIONS
    IOS导航栏的使用方法
    报错:Expected one result (or null) to be returned by selectOne(), but found: 6
    Spring小知识
    spring动态代理
    登录和注册功能思路
    sql语句实例练习
  • 原文地址:https://www.cnblogs.com/Eeexiang/p/9273929.html
Copyright © 2011-2022 走看看