java – 在春天使用拦截器

情况就是这样:

我为什么要使用拦截器?

我想编写一个模块,用于存储有关我服务器上提供的所有请求的数据.这些数据可以帮助我很好地进行数据可视化.

我目前如何使用?

@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注释解决了该问题.我不知道它做了什么;)

我在阅读时错过了下面的部分,

java  – 在春天使用拦截器

我从不希望完全控制弹簧MVC.我只是想实现拦截器.

上一篇:SpringMVC 配置Interceptor拦截器案例


下一篇:c# – 在接口上拦截