过滤servlet不起作用

时间:2014-10-22 17:22:15

标签: java servlets web-deployment servlet-filters

我想为一个特定的servlet使用过滤器。我的代码是:

     @WebFilter(dispatcherTypes = {
            DispatcherType.REQUEST, 
            DispatcherType.FORWARD, 
            DispatcherType.INCLUDE
    }
                , servletNames = { "myServlet" })
    public class ImageProtect implements Filter 
    {
          public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException 
          {
          System.out.println("Hello from Filter");
          chain.doFilter(request, response);
         }
    }

我的问题是没有任何反应。在eclipse控制台中,不幸的是看不到消息。 servlet只是一个库存servlet。有什么问题?

3 个答案:

答案 0 :(得分:2)

在web.xml文件中添加此过滤器

<filter>
   <filter-name>ImageProtect</filter-name>
   <filter-class>ImageProtect</filter-class>
</filter>
<filter-mapping>
   <filter-name>ImageProtect</filter-name>
   <url-pattern>/myServlet</url-pattern>
</filter-mapping>

答案 1 :(得分:1)

为了在不使用web.xml的情况下完成这项工作,您需要为servletNames编写FQCN,而不仅仅是servlet名称,&#34; myServlet&#34;。 如果您的&#34; myServlet&#34;文件位于包&#34; xxx.xxxx.xxxx&#34;,然后  不是&#34; myServlet&#34;,但&#34; xxx.xxxx.xxxxx.myServlet&#34;。 然后过滤器应该工作。

答案 2 :(得分:0)

您应该尝试将此过滤器映射到每个网页@WebFilter("/*"),只需尝试在注释中添加此过滤器,而不是将过滤器映射到一个特定的servlet servletNames = { "myServlet" }。我猜这可能会帮助您< / p>