自定义方法拦截器 @interface 属于annotation 注解
import java.lang.annotation.ElementType;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.lang.annotation.Retention;
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
public @interface AccessRequired {
}
设计: 继承org.springframework.web.servlet.handler.HandlerInterceptorAdapter,重写preHandle方法.
实现:
xxx-servlet.xml加入:
- <mvc:interceptors>
- <mvc:interceptor>
- <mvc:mapping path="/**"/>
- <bean class="com.xxx.FrontInterceptor"/>
- </mvc:interceptor>
- </mvc:interceptors>
- 前台拦截器
- public class FrontInterceptor implrmrnts HandlerInterceptor{
- private static Logger logger=Logger.getLogger(<span style="font-size: 1em; line-height: 1.5;">FrontInterceptor.class </span><span style="font-size: 1em; line-height: 1.5;">)
- @override
- public boolean preHandle(HttpServletRequest request,HttpServletresponse,Object </span><span style="font-family: 'Courier New', Courier, monospace; font-size: 1em; line-height: 1.5;">handler</span><span style="font-size: 1em; line-height: 1.5;">){</span>
- <span style="font-size: 1em; line-height: 1.5;">
- </span>
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
AccessRequired annotation = method.getAnnotation(AccessRequired.class);
if (annotation != null) {
System.out.println("你遇到了:@AccessRequired");
String accessToken = request.getParameter("access_token");
/**
* Do something
*/
response.getWriter().write("没有通过拦截,accessToken的值为:" + accessToken);
}
// 没有注解通过拦截
return true;
- <span style="font-size: 1em; line-height: 1.5;">}</span>
- }