过滤器根本没有被执行

Filter not being executed at all

我在 Tomcat 8 中有一个简单的 HttpServlet 过滤器,我想在每个请求上使用它,然后继续处理其他 servlet。但是过滤器根本没有被执行。这是 web.xml

<web-app xmlns="http://xmlns.jcp.org/xml/ns/javaee" version="3.1">

    <welcome-file-list>
        <welcome-file>index.jsp</welcome-file>
    </welcome-file-list>

    <filter>
        <filter-name>requestFilter</filter-name>
        <filter-class>controller.RequestsFilter</filter-class>
    </filter>
    <filter-mapping>
        <filter-name>requestFilter</filter-name>
        <servlet-name>index</servlet-name>
    </filter-mapping>

    <servlet>
        <servlet-name>index</servlet-name>
        <jsp-file>/index.jsp</jsp-file> 
    </servlet>
    <servlet-mapping>
        <servlet-name>index</servlet-name>
        <url-pattern>/index</url-pattern>
    </servlet-mapping>

</web-app>

这是过滤器:

@WebFilter
public class RequestsFilter extends HttpServlet implements Filter {

    static Logger log = Logger.getLogger("RequestFilter");

    @Override
    public void init(FilterConfig filterConfig) throws ServletException {

    }

    @Override
    public void doFilter(ServletRequest servletRequest, ServletResponse servletResponse, FilterChain filterChain) throws IOException, ServletException {
        HttpServletRequest req = (HttpServletRequest) servletRequest;
        HttpServletResponse resp = (HttpServletResponse) servletResponse;

        req.setAttribute("key", "some random string");

        log.warning("**RequestFilter**");
        filterChain.doFilter(req, resp);
    }

}

非常感谢任何帮助,谢谢。

不是过滤器。

混淆了 servlet 和过滤器。 Filter 和 Servlet 完全是两个不同的东西。

public class RequestsFilter extends HttpServlet implements Filter {

我也能在您的 web.xml 中看到一些问题。 <servlet-name> 不应出现在 <filter-mapping>

 <servlet-name>index</servlet-name>

你可以找到一个简单而干净的例子here.