spring中对自己的Controller有专门的拦截器,如果你用spring的AOP进行拦截的话,是不能拦截的。下面是利用spring的HandlerInterceptorAdapter类来做的拦截。
1.拦截器的代码:
2.配置拦截器:
3.拦截器如果要中断运行,这里的方法只能抛出异常:
1.拦截器的代码:
public class BlockControllAdvice extends HandlerInterceptorAdapter {
private static final Logger log = Logger.getLogger(BlockControllAdvice.class);
/** 权限验证方法,
*
* @param request,response,handler
* @return boolen
* @auther kaungyujian
*/
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {
log.debug("into controller advice........");
MultiActionController maControl = (MultiActionController) handler;
ParameterMethodNameResolver pmrResolver = (ParameterMethodNameResolver) maControl.getMethodNameResolver();
String methodName = pmrResolver.getHandlerMethodName(request);
String className = handler.getClass().getName();
String path = request.getRequestURI(); //获得请求的路径 }
}
2.配置拦截器:
<bean id="urlMapping" class="org.springframework.web.servlet.handler.SimpleUrlHandlerMapping">
<property name="interceptors">
<list>
<ref bean="beforeBlock"/>
</list>
</property>
<property name="mappings">
<props>
<prop key="/test.do">testController</prop>
</props>
</property>
</bean>
<bean id="beforeBlock" class="com.juraglobal.softguard.common.web.action.BlockControllAdvice"/>
3.拦截器如果要中断运行,这里的方法只能抛出异常:
<bean id="exception" class="org.springframework.web.servlet.handler.SimpleMappingExceptionResolver">
<property name="exceptionMappings">
<props>
<prop key="com.juraglobal.softguard.common.web.action.RightPassException">noRight</prop>
</props>
</property>
</bean>