经过很长时间调试我的应用程序后,我意识到对我来说毫无意义的事情。每当我调用下面举例说明的控制器时,我的拦截器就会被执行两次。
@RequestMapping(method = RequestMethod.GET, produces = MediaType.IMAGE_JPEG_VALUE)
public ResponseEntity<byte[]> getMedia(String url) throws IOException {
...
}
出于测试目的,我删除了“产生”部分,同一个拦截器只被调用一次。
有人可以告诉我为什么会这样吗?它被调用两次的事实是产生错误,因为在第二次调用时,所有请求标头都是空的,因此我的验证失败。
我的拦截器只是一个实现如下:
public class AuthenticatorInterceptor extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler) throws Exception {
//validations
return super.preHandle(request, response, handler);
}
答案 0 :(得分:2)
检查您的类是否还有一个生成不同mimetype的@RequestMapping注释。也许这是你问题的根源,因为两者都会产生&#34;声明可能是你的拦截器被调用两次的原因。