2015-09-27 29 views
0

我想在spring调用控制器方法之前和/或之后运行一些代码(用于日志记录或自定义安全性等)。我知道Filter s可以被创建为在ServletRequest s和ServletResponse s上运行,但是不清楚如何从那里访问头部,主体,查询参数等。在弹簧启动控制器之前或之后的http上下文上运行代码

与我试图做的最类似的是在Play Framework for java中的动作组合。

有没有办法在春季做到这一点?

+0

注入为每个请求页眉看一看[的HandlerInterceptor]的例子(http://docs.spring.io/spring/docs/current/ Javadoc的API /组织/ springframework的/网络/的servlet/HandlerInterceptor.html)秒。 –

回答

0

下面是如何使用过滤

@Component 
@Order(Ordered.HIGHEST_PRECEDENCE) 
public final class VersionFilter implements Filter { 

@Value("${version}") 
protected String version; 

protected FilterConfig filterConfig; 

public void init(FilterConfig filterConfig) throws ServletException { 
    this.filterConfig = filterConfig; 
} 

public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { 
    HttpServletResponse responseAddition = (HttpServletResponse) response; 

    responseAddition.addHeader("X-Application-Version", this.version); 

    chain.doFilter(request,responseAddition); 
} 

@Override 
public void destroy() { 

} 
} 
相关问题