我有春天的Web应用程序。 我想提出的,这将在每个HTTP请求的开始执行,这样我可以检查垃圾邮件代码的一些常见的一块。 我在web.xml中,这意味着DispatcherServlet的是每一个HTTP请求的第一入口点配置的DispatcherServlet。 我的问题是没有的DispatcherServlet提供将要执行的第一,然后将控制传递到请求的注释控制器的任何方法?
Answer 1:
IMO这种功能将属于中HandlerInterceptor
(参考文档) 。
Answer 2:
我会同意戴夫。 你所寻找的是在映射的URL的所有请求的过滤器/拦截。 传统上,这一直用做ServletFilter中 。 这就是你把你的自定义代码。 例如。
public FooFilter implements ServletFilter {
@Override
void doFilter(ServletRequest request,
ServletResponse response,
FilterChain chain)
throws IOException,
ServletException {
// My Custom check for spam.
}
}
一旦实现了在ServletFilter中您的自定义代码,所有你需要的是在web.xml配置。
<filter>
<filter-name>FooFilter</filter-name>
<filter-class>com.foo.servlet.filters.FooFilter</filter-class>
<init-param>
<param-name>test-param</param-name>
<param-value>Test parameter.</param-value>
</init-param>
</filter>
<filter-mapping>
<filter-name>FooFilter</filter-name>
<url-pattern>/*</url-pattern> <!-- The URL to be filtered. -->
</filter-mapping>
它的配置过滤器和拦截你的Web请求的最简单方法。
当使用Spring框架你想使用自旋微观的HandlerInterceptor接口。 一个很好的职位周围什么时候使用什么都可以找到这里 。
希望这可以帮助。
Answer 3:
Servlet过滤器将工作,因为过滤器总是比任何servlet执行之前。 过滤器将调度的servlet之前执行,但调度的servlet后实际处理程序之前拦截器将执行!
文章来源: spring DispatcherServlet, code to execute before it