spirngmvc 注解方式实现拦截器配置

  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";

    }

这样就会进行拦截。

 


版权声明:本文为yu467059509原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。