情况就是这样:
我为什么要使用拦截器?
我想编写一个模块,用于存储有关我服务器上提供的所有请求的数据.这些数据可以帮助我很好地进行数据可视化.
我目前如何使用?
@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”的视图控制器.但不知怎的,它不起作用.
有人可以在这启发我.我已经浏览了*中的几乎所有链接,并且找不到任何东西,可能是我无法与我的要求相关.
解决方法:
通过删除EnableWebMvc注释解决了该问题.我不知道它做了什么;)
我在阅读时错过了下面的部分,
我从不希望完全控制弹簧MVC.我只是想实现拦截器.