我想为一个特定的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。有什么问题?
答案 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>