我有一个拦截器,应该拦截具有不同模式的网址,例如:
我必须拦截所有包含“添加”的网址。有很多的出头和somethingelses ...
我尝试了不同的模式,但似乎它们都是错误的:
拦截器就像
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
方法是PUT
或POST
请求。所以我在全局拦截器中检查了这一点:
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] 删除。
我来说两句