spring拦截器 拦截springMVC的controller


这段时间在用springmvc+mybatis做项目,中途用到spring aop拦截 具体配置也贴一下,这是在spring-Mvc.xml配置文件中的,注意必须在spring-MVC中加入


<aop:config proxy-target-class="true">
		<aop:aspect id="concurrentOperationRetry" ref="interceptor">
		<aop:pointcut id="idempotentOperation"
			expression="execution(* com.csuft.controller..*.*(..))" />
		<aop:around pointcut-ref="idempotentOperation" method="doSomeThingAround" />
	</aop:aspect>
	</aop:config>
	<bean id="interceptor" class="com.csuft.privilege.Interceptor">
	</bean>

 <context:component-scan base-package="com.csuft" />这句话在spring-MVC.xml中写一次,没必要到spring.xml中写了,据网上资料,写上会多实例化一次

下面是拦截器的代码


import java.lang.reflect.Method;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;

import org.aspectj.lang.ProceedingJoinPoint;
import org.aspectj.lang.reflect.MethodSignature;

import com.csuft.util.WebTool;

public class Interceptor {

	public Object doSomeThingAround(ProceedingJoinPoint pjp) throws Throwable {
		
		HttpServletRequest request = null;
		/*得到拦截的方法*/
		Method m = ((MethodSignature) pjp.getSignature()).getMethod();
		// 获得参数
		Object[] args = pjp.getArgs();
		/**
		 *权限验证
		 */
		System.out.println("=====================================拦截器==========================");
		Object result = pjp.proceed();
		return result;
	}

}

注意的是:拦截器的配置要放在spirng-mvc中,在本次拦截中我放在spring.xml中,就是不起作用,但是通过juint测试却可以执行拦截器,当然还不知道什么原因,先贴这吧

你可能感兴趣的:(spring,AOP,springMVC,Interceptor)