从球衣迁移到 spring-mvc/rest:ContainerRequestFilter、ContainerResponseFilter
Migrating from jersey to spring-mvc/rest: ContainerRequestFilter, ContainerResponseFilter
由于业务需要,我需要从球衣迁移到 spring-mvc/rest...
我正在 spring-mvc 中搜索与球衣 ContainerRequestFilter
、ContainerResponseFilter
.
等效的内容
有什么想法吗?
我想你要找的是 HandlerInterceptor
。你不会在 two-class request/response flavor 中找到它,但是两种过滤方法都包含在同一个 class 中,形式为 preHandle
和 [=14] =],分别相当于request-filter
和response-filter
。拦截器包装处理程序调用。这是一个例子:
拦截器:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class LogginHandlerInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest hsr,
HttpServletResponse hsr1, Object handler) throws Exception {
System.out.println("preHandle - " + handler);
return true;
}
@Override
public void postHandle(HttpServletRequest hsr, HttpServletResponse hsr1,
Object handler, ModelAndView mav) throws Exception {
System.out.println("postHandle - " + handler);
}
@Override
public void afterCompletion(HttpServletRequest hsr, HttpServletResponse hsr1,
Object handler, Exception excptn) throws Exception {
System.out.println("afterCompletion - " + handler);
}
}
配置:
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"..."})
public class WebAppConfiguration extends WebMvcConfigurerAdapter {
...
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LogginHandlerInterceptor());
}
...
}
另请参阅:
由于业务需要,我需要从球衣迁移到 spring-mvc/rest...
我正在 spring-mvc 中搜索与球衣 ContainerRequestFilter
、ContainerResponseFilter
.
有什么想法吗?
我想你要找的是 HandlerInterceptor
。你不会在 two-class request/response flavor 中找到它,但是两种过滤方法都包含在同一个 class 中,形式为 preHandle
和 [=14] =],分别相当于request-filter
和response-filter
。拦截器包装处理程序调用。这是一个例子:
拦截器:
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.web.servlet.HandlerInterceptor;
import org.springframework.web.servlet.ModelAndView;
public class LogginHandlerInterceptor implements HandlerInterceptor{
@Override
public boolean preHandle(HttpServletRequest hsr,
HttpServletResponse hsr1, Object handler) throws Exception {
System.out.println("preHandle - " + handler);
return true;
}
@Override
public void postHandle(HttpServletRequest hsr, HttpServletResponse hsr1,
Object handler, ModelAndView mav) throws Exception {
System.out.println("postHandle - " + handler);
}
@Override
public void afterCompletion(HttpServletRequest hsr, HttpServletResponse hsr1,
Object handler, Exception excptn) throws Exception {
System.out.println("afterCompletion - " + handler);
}
}
配置:
import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.EnableWebMvc;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
@Configuration
@EnableWebMvc
@ComponentScan(basePackages = {"..."})
public class WebAppConfiguration extends WebMvcConfigurerAdapter {
...
@Override
public void addInterceptors(InterceptorRegistry registry) {
registry.addInterceptor(new LogginHandlerInterceptor());
}
...
}