gpt4 book ai didi

java - 拦截器在spring中的使用

转载 作者:搜寻专家 更新时间:2023-11-01 03:35:53 25 4
gpt4 key购买 nike

情况是这样的:

我为什么要使用拦截器?

我想编写一个模块来存储有关在我的服务器上处理的所有请求的数据。这些数据可以很好地帮助我进行数据可视化。

我目前使用情况如何?

@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 内部时,有趣的一点是“处理程序”参数为我提供了 org.springframework.boot.autoconfigure.web.BasicErrorController.errorHtml,而当我正常使用该应用程序时(没有拦截器)我得到的是 org.springframework.web.servlet.mvc.ParameterizableViewController@1bff7859

这转移了我的注意力,让我在拦截器配置中添加 addViewControllers。但是我不知道如何添加它们以及添加它们。我尝试为“/”和“/login”添加相应的 View 名称的 View Controller 。但不知何故,它不起作用。

谁能告诉我这方面的知识。我已经遍历了 stackoverflow 中的几乎所有链接,但找不到任何东西,可能是我无法满足我的要求。

最佳答案

通过删除 EnableWebMvc 注释解决了该问题。我不知道它的作用;)

我在阅读时错过了下面的文章,

enter image description here

我从来不想完全控制 spring MVC。我只是想实现拦截器。

关于java - 拦截器在spring中的使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31719773/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com