弹簧的DispatcherServlet,代码之前它执行(spring DispatcherServ

2019-09-25 21:03发布

我有春天的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