springmvc的拦截器不能像Struts2一样可以通过注解的方式进行配置,这样可能在实际的使用中带来不便,下面将采用自定义注解的方式进行拦截器配置:
1,自定义注解:
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
public @interface NeedWork {
String value() default "";
}
2,拦截器的实现
public class NeedWorkInterceptor implements HandlerInterceptor {
// 如果不是映射到方法直接通过
if (!(handler instanceof HandlerMethod)) {
return true;
}
HandlerMethod handlerMethod = (HandlerMethod) handler;
Method method = handlerMethod.getMethod();
NeedWork needWork = method.getAnnotation(NeedWork.class);
if (needWork != null) {
//下面是拦截器需要判断的逻辑
if (work) {
return true;
}
else {
JOptionPane.showMessageDialog(null, "未通过拦截器", "提示",
JOptionPane.INFORMATION_MESSAGE);
request.getRequestDispatcher("/a/index").forward(request,
response);
return false;
}
}
return true;
}
}
配置文件:
<mvc:interceptor>
<mvc:mapping path="${adminPath}/**" />
<bean class="cn.chinapost.NeedWorkInterceptor" />
</mvc:interceptor>
</mvc:interceptors>
这样就大致完成了,接下来只需要在需要进行的拦截的方法上加上注解就行:
@NeedWork
@RequestMapping(value = { "toadd" })
public String toAdd(Model model, SortersectworkcfgmaintQuery query) {
model.addAttribute("query", query);
return "edit";
}
这样就会进行拦截。