Java 弹簧截流器不工作
我知道这已经被问了很多次了,但是没有一个能让我的代码正常工作。我可能做错了什么,但我不知道是什么 我将Spring Boot与AngularJS一起使用,我试图做的是预处理所有请求 这是我的代码: 控制器:Java 弹簧截流器不工作,java,angularjs,spring,interceptor,Java,Angularjs,Spring,Interceptor,我知道这已经被问了很多次了,但是没有一个能让我的代码正常工作。我可能做错了什么,但我不知道是什么 我将Spring Boot与AngularJS一起使用,我试图做的是预处理所有请求 这是我的代码: 控制器: @RestController @RequestMapping(value = { "/user" }) public class UserController { @RequestMapping(value = "/get", method = RequestMethod.GET
@RestController
@RequestMapping(value = { "/user" })
public class UserController {
@RequestMapping(value = "/get", method = RequestMethod.GET)
public String getLanguage() {
return "user";
}
}
拦截器:
@Component
public class RequestHandler extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws ServletException {
System.out.println("intercepted");
return false;
}
}
网络配置:
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Autowired
HandlerInterceptor requestHandler;
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(requestHandler);
}
}
我在applicationContext.xml中添加了以下内容:
<mvc:interceptors>
<bean class="server.RequestHandler" />
</mvc:interceptors>
我整个周末都在努力使这项工作顺利进行,但我做不到,任何帮助都将不胜感激
谢谢大家! 您可以尝试手动定义
Bean
,而不将拦截器
声明为@组件
,如下所示:
RequestHandler.java
WebConfig.java 顺便问一下:如果类被声明为拦截器,为什么不将其重命名为包含术语拦截器的内容,例如
RequestInterceptor
它应该直接起作用。请让我知道这是否对你有好处
更新:我已经在一个原型中实现了这一点。请参阅这个最小、完整且可验证的示例。希望有帮助!
您是否尝试注入RequestHandler而不是常规HandlerInterceptor。或者向registry.addInterceptor(new RequestHandler())注册拦截器?我已经尝试过了,但仍然不起作用。为什么要同时使用xml和java配置来设置Spring MVC。。。这是等待发生的麻烦。。。同样,如果没有
@EnableWebMvc
或
这些配置也不会太多,那么如果手动配置HandlerAdapter
和/或HandlerMapping
,同样的情况也会发生。我该怎么做呢?你能给我一个例子,说明我必须做什么改变才能尝试它是否有效吗?我试过了,但说它可以在那里创建一个bean。我不知道我还能做什么,因为我已经尝试了很多东西。我可以在web.xml中设置一些内容吗?因为我的是空的,所以我尝试在那里设置servlet映射,但它说它可以声明或类似的东西。也许您有时间验证它是否对您有效。另外,我必须指出,preHandle
方法的返回值应该是true
,以便完成请求处理程序链并到达控制器方法。请也看看这个@Motomine我想要的不是返回它,只是测试它是否有效,但是页面总是加载。我想你在这方面误解了我。你看过我的例子了吗?你的代码应该是一样的。在每个请求期间都会调用拦截器
public class RequestHandler extends HandlerInterceptorAdapter {
@Override
public boolean preHandle(final HttpServletRequest request, final HttpServletResponse response, final Object handler) throws ServletException {
System.out.println("intercepted");
return true;
}
}
@Configuration
public class WebConfig extends WebMvcConfigurerAdapter {
@Bean
public RequestHandler requestHandler() {
return new RequestHandler();
}
@Override
public void addInterceptors(final InterceptorRegistry registry) {
registry.addInterceptor(requestHandler());
}
}