注解方式过滤器(Filter)不能过滤Servlet的问题

    xiaoxiao2021-04-16  68

    首先出现这个问题的前提是,Servlet使用注解方式。

    Filter 和 Servlet 如下:

    package com.jxust.servlet; @WebServlet("/CartItemServlet") public class FirstServlet extends HttpServlet { //BaseServlet ... package com.jxust.filter; @WebFilter( urlPatterns = { "/user/*", "/cart/*" }, servletNames = { "FirstServlet", "SecondServlet" }) public class LoginFilter implements Filter { public void destroy() { } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { System.out.println("LoginFilter拦截....."); chain.doFilter(request, response); } public void init(FilterConfig fConfig) throws ServletException { }

    测试发现:LoginFilter 只能过滤 urlPatterns 的 /user/* 、/cart/* 请求 ,无法过滤 servletNames 里的Servlet

    目前测试发现,Servlet 使用 web.xml 文件配置方式可以解决,怀疑是 Servlet 注解方式导致 Filter 无法找到对应的Servlet,也就没法过滤。

    web.xml

    ... <servlet> <servlet-name>FirstServlet</servlet-name> <servlet-class>com.jxust.servlet.FirstServlet</servlet-class> </servlet> <servlet> <servlet-name>SecondServlet</servlet-name> <servlet-class>com.jxust.servlet.SecondServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>FirstServlet</servlet-name> <url-pattern>/FirstServlet</url-pattern> </servlet-mapping> <servlet-mapping> <servlet-name>SecondServlet</servlet-name> <url-pattern>/SecondServlet</url-pattern> </servlet-mapping>

    Filter 可以使用注解,没必要必须在 web.xml 里配置

    转载请注明原文地址: https://ju.6miu.com/read-673018.html

    最新回复(0)