我在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);
}
}
感谢任何帮助,谢谢。
答案 0 :(得分:2)
这是 NOT 过滤器。
您混合 servlet和过滤器。 Filter和Servlet完全是两个不同的东西。
public class RequestsFilter extends HttpServlet implements Filter {
我也可以在你的web.xml中看到一些问题。 <servlet-name>
<filter-mapping>
<servlet-name>index</servlet-name>
您可以找到一个简单而干净的示例 here 。