过滤器根本没有被执行
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.
我在 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.