Spring MVC拦截器模式

小:

我有一个拦截器,应该拦截具有不同模式的网址,例如:

  • myapp /某物/添加/任何
  • myapp /东西/添加
  • myapp /东西/添加
  • myapp /某物/某物/添加
  • 等等...

我必须拦截所有包含“添加”的网址。有很多的出头somethingelses ...

我尝试了不同的模式,但似乎它们都是错误的:

  • **/加/*
  • **/加*
  • ** / add / **(我在最后一个**之前添加了空格,因此不会将其格式化为粗体)

拦截器就像

public class MyInterceptor implements HandlerInterceptor {
}

我在配置它

@Configuration
@EnableSpringDataWebSupport
@EnableWebMvc
class MvcConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(final InterceptorRegistry registry) {                       
        registry.addInterceptor(getMyInterceptor()).addPathPatterns("**/add/*", "**/add/**", "**/add*");
    }

    @Bean
    public MyInterceptor getMyInterceptor() {
        return new MyInterceptor();
    }
}

如果我尝试访问

http:// localhost:8080 / myapp / something / add / somethingelse

我的拦截器没有拦截...

节食者:

我有一个类似的问题。这是我的建议。

首先使用全局拦截器并检查请求uri:

public class MyInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        String uri = request.getRequestURI();

        if(uri.contains("/add")){
            // do your job
        }

        return super.preHandle(request, response, handler);
    }
}

就我而言,alls- add方法是PUTPOST请求。所以我在全局拦截器中检查了这一点:

public class MyInterceptor extends HandlerInterceptorAdapter {

    @Override
    public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {

        String method = request.getMethod();
        if("PUT".equals(method) || "POST".equals(method)){
            // do your job
        }

        return super.preHandle(request, response, handler);
    }
}

没有配置它addPathPatterns

@Configuration
@EnableSpringDataWebSupport
@EnableWebMvc
class MvcConfiguration extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(final InterceptorRegistry registry) {
        registry.addInterceptor(getMyInterceptor());
    }

    @Bean
    public MyInterceptor getMyInterceptor() {
        return new MyInterceptor();
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章