spring - 所有请求的方法

时间:2014-12-27 17:34:07

标签: java spring spring-mvc

有一种方法(在Spring中)定义一个必须为所有请求调用的方法,类似于@modelAttribute ???

我想定义一个方法来执行检查并为每个请求放入会话对象,方法是一样的

在这种方法中,我将收到“Principal”(null,在认证之前和用户名... ecc之后)

2 个答案:

答案 0 :(得分:1)

一种方法是使用org.springframework.web.servlet.handler.HandlerInterceptorAdapter。

看一下这篇文章:

http://www.journaldev.com/2676/spring-mvc-interceptors-example-handlerinterceptor-and-handlerinterceptoradapter

只需创建一个扩展它的类并使其成为一个组件。然后,您可以将拦截器映射到applicatioContext.xml中的特定URL patterm。

 <mvc:interceptors>  
 <mvc:interceptor>  
     <mvc:mapping path="/*.svc"/>  
    <bean class="com.netsoft.skydive.controllers.SecuredApiEndpoint"></bean>  
 </mvc:interceptor>  
</mvc:interceptors>  

答案 1 :(得分:1)

如另一个答案所述 - 只需使用HandlerInterceptor并继承自例如HandlerInterceptorAdapter。最方便的方法可能是使用Spring的java配置,如下面的代码示例所示:

@Configuration
@EnableWebMvc
@ComponentScan(basePackages="my.base.package")
public class MyWebApplicationConfig extends WebMvcConfigurerAdapter {

    @Override
    public void addInterceptors(InterceptorRegistry registry) {
        registry.addInterceptor(new HandlerInterceptorAdapter() {
            @Override
            public boolean preHandle(final HttpServletRequest httpServletRequest, final HttpServletResponse httpServletResponse, final Object o) throws Exception {
                // Do stuff with your interceptor
                return true;

            }
        }).addPathPatterns("/**");
    }
}

有关详细信息,请查看优秀的JavaDoc