拦截器获取被拦截方法的参数和返回值,并判断传参是否为空

时间:2025-03-20 11:48:09
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import ;
import org.;
import org.;

/**
* Created by xuweilin on 12/16/16.
*/
@Aspect //[color=red]定义一个切面[/color]
@Configuration
public class LogRecordAspect {
private static final Logger logger = ();

// [color=red]定义切点Pointcut,UserController类的所有方法[/color]
@Pointcut("execution(* .*(..))")
public void excudeService() {
}

// [color=red]定义切点Pointcut,controller包和所有子包的所有类的方法执行[/color]
@Pointcut("execution(* ..*.*(..))")
public void excudeService2() {
}

//[color=red]表示上面两个都匹配[/color]
@Pointcut("excudeService() || excudeService2()")
public void excudeService3() {
}

@Around("excudeService3()")
public Object doAround(ProceedingJoinPoint pjp) throws Throwable {
RequestAttributes ra = ();
ServletRequestAttributes sra = (ServletRequestAttributes) ra;
HttpServletRequest request = ();

String url = ().toString();
String method = ();
String uri = ();
String queryString = ();
("请求开始, 各个参数, url: {}, method: {}, uri: {}, params: {}", url, method, uri, queryString);

String res=("%22", "");
(res);

String[] str=("&");
//[color=red]判断传入的参数是否为空[/color]
for(String str1:str){
String[] str2=("=");
if(<=1){
(str2[0]+"为空!");
break;
}else if((str2[1])){
(str2[0]+"为空!");
break;
}

}

//[color=red]获取将要执行的方法名称 [/color]
String methodName = ().getName();
//[color=red]获取执行方法的参数[/color]
Object[] args = ();
args[-1]=true;
//[color=red]从参数列表中获取参数对象[/color]
for(Object obj : args){//[color=red]查看参数值[/color]
("***********"+());
}

// [color=red]result的值就是被拦截方法的返回值[/color]
Object result = ();
//[color=red]不返回,被拦截的方法返回值不能被接收(如:前台不能接收到值)[/color]
return result;
}
}