我基本上有一个过滤器,并且在其中使用doFilter方法,我只是将消息打印到控制台,并且我已将该过滤器应用于我的示例Web应用程序的每个页面。
的web.xml
<?xml version="1.0" encoding="UTF-8"?>
<web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:web="http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd" id="WebApp_ID" version="3.0">
<filter>
<filter-name>LoginFilter</filter-name>
<filter-class>
com.mypkg.filters.LoginFilter
</filter-class>
</filter>
<filter-mapping>
<filter-name>LoginFilter</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>utility.jsp</welcome-file>
和我的过滤器代码 LoginFilter.java
package com.mypkg.filters;
import java.io.IOException;
import javax.servlet.*;
import javax.servlet.http.HttpServletResponse;
//other imports
public class LoginFilter implements Filter {
@Override
public void init(FilterConfig config) throws ServletException {
System.out.println("Filter init ran!");
}
@Override
public void doFilter(ServletRequest request, ServletResponse response,FilterChain chain) throws IOException, ServletException {
System.out.println("Filter running!");
}
@Override
public void destroy(FilterConfig config) throws ServletException {
//System.out.println("Filter destoryed!");
}
现在,当我第一次运行此过滤器时,我得到了#34;过滤器运行&#34;消息,但在那之后,我包括hibernate和其他库,它停止工作,我删除它们和相同的结果。过滤器不运行。检查网址模式和一切..无能为力!!
任何指针?
答案 0 :(得分:1)
首先,在doFilter方法中,您应该调用链中的下一个过滤器:
chain.doFilter(request, response);
如果不这样做,您的请求将不会在过滤后进一步处理。
这可能是您遇到问题的原因。
编辑:
你的destroy()方法也是错误的。在这里你应该如何重写它:
@Override
public void destroy() {
System.out.println("Filter destoryed!");
}
答案 1 :(得分:1)
也许你之前已经执行了另一个Filter
,但没有调用chain.doFilter()
,从而阻止执行下一个过滤器(包括你的过滤器)。