Eee_xiang

导航

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 }

 

posted on 2018-07-06 15:41  Eee_xiang  阅读(165)  评论(0编辑  收藏  举报