情况就是这样:
为什么我使用拦截器?
我想编写一个模块,用于存储有关我服务器上提供的所有请求的数据。这些数据可以帮助我很好地进行数据可视化。
我目前如何使用?
@Component
public class MyCustomInterceptor extends HandlerInterceptorAdapter{
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler)
throws Exception
{
System.out.println("In Interceptor");
return true;
}
public void postHandle(
HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView)
throws Exception {
System.out.println("In Post Handler");
}
public void afterCompletion(
HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex)
throws Exception {
System.out.println("After completion");
}
}
我正在注册拦截器,如下所示,
@Configuration
@EnableWebMvc
@ComponentScan(basePackages="demo.mycustom")
public class MyInterceptorConfig extends WebMvcConfigurerAdapter{
@Autowired
MyCustomInterceptor obj;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(obj);
}
}
现在的挑战是,
当我尝试登录“localhost:8096 / myApp /#/ login”时,这将返回404找不到的页面。只有在我添加拦截器配置时才会观察到这种情况。虽然我认为这是必要的,因为我必须告诉我的应用程序这是我想要注册的拦截器。
这里可以做些什么?
观察:
当我调试并查看preHandle内部时,有趣的一点是“handler”参数给了我org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml
,当我正常使用应用程序时(没有拦截器)我得到org.springframework.web.servlet.mvc.ParameterizableViewController@1bff7859
这转移了我的想法,让拦截器配置中有addViewControllers。但我不知道如何添加它们以及添加它们的内容。我尝试相应地为视图名称添加“/”和“/ login”的视图控制器。但不知怎的,它不起作用。
有人可以在这启发我。我已经浏览了stackoverflow中的几乎所有链接,并且找不到任何内容,可能是我无法满足我的要求。