gpt4 book ai didi

java - Spring MVC 处理程序拦截器不运行

转载 作者:搜寻专家 更新时间:2023-11-01 02:08:50 24 4
gpt4 key购买 nike

我有以下拦截器类:

package cz.coffeeexperts.feedback.server.web.interceptors;

import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.springframework.web.servlet.handler.HandlerInterceptorAdapter;

public class RestAuthorizationInterceptor extends HandlerInterceptorAdapter {

@Override
public boolean preHandle(HttpServletRequest request,
HttpServletResponse response, Object handler)
throws Exception {

System.out.println("fuu");
response.setStatus( HttpServletResponse.SC_UNAUTHORIZED );
return false;
}
}

我在我的 spring-webmvc.xml 中配置如下:

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd

http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd">

<mvc:annotation-driven/>

<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/rest/api/01/status" />
<bean class="cz.coffeeexperts.feedback.server.web.interceptors.RestAuthorizationInterceptor" />
</mvc:interceptor>
</mvc:interceptors>

</beans>

但是,当我转到 http://localhost:8080/myserver/rest/api/01/status 时,我会得到状态代码为 200 的常规答复(与添加拦截器之前相同)。此外,不会打印消息“fuu”(因此不会调用 preHandle 方法)。

有什么想法吗?我开始用这个例子来做:http://javapapers.com/spring/spring-mvc-handler-interceptor/ , 但所有其他示例看起来都一样,我找不到哪里出错了。

我正在使用 Spring 3.2.4.RELEASE


重要的编辑,它适用于此:

<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/**" />
<bean class="cz.coffeeexperts.feedback.server.web.interceptors.RestAuthorizationInterceptor" />
</mvc:interceptor>
</mvc:interceptors>

所以问题是,我的路径有什么问题?

最佳答案

好的,我找到了解决方案,因为我的路径定义如下:

<servlet-mapping>
<servlet-name>rest</servlet-name>
<url-pattern>/rest/*</url-pattern>
</servlet-mapping>

这就是我的 Controller 的样子

@Controller
@RequestMapping(value = "/api")
public class ApiController {
@RequestMapping(value = "/01/status", method = RequestMethod.GET)
@ResponseBody
public ServerStatusJSON getStatus(HttpServletResponse response) {
...
}
}

此地址的工作配置:http://localhost:8080/myserver/rest/api/01/status 如下:

<mvc:interceptors>
<mvc:interceptor>
<mvc:mapping path="/api/01/status" />
<bean class="cz.coffeeexperts.feedback.server.web.interceptors.RestAuthorizationInterceptor" />
</mvc:interceptor>
</mvc:interceptors>

PS:感谢 geoand,他把我推向了正确的道路。

关于java - Spring MVC 处理程序拦截器不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23293368/

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