为什么过滤器只执行一次?

mmt 2003-07-10 12:22:11
我编写了一个测试的过滤器,当我第一次装载一个servlet时,过滤器发挥作用,重复刷新该servlet时,过滤器没有被调用,是否是我的配置有问题,如果真是这样,就无法使用它来做认证了。请高手指点。谢谢
我的web.xml:
<web-app>
<filter>
<filter-name>Servlet Mapped Filter</filter-name>
<filter-class>filters.ExampleFilter</filter-class>
<init-param>
<param-name>attribute</param-name>
<param-value>filters.ExampleFilter.SERVLET_MAPPED</param-value>
</init-param>
</filter>

<filter-mapping>
<filter-name>Servlet Mapped Filter</filter-name>
<servlet-name>invoker</servlet-name>
</filter-mapping>

<servlet-mapping>
<servlet-name>invoker</servlet-name>
<url-pattern>/servlet/*</url-pattern>
</servlet-mapping>
</web-app>


过滤器程序:
package filters;
import java.io.IOException;
import javax.servlet.Filter;
import javax.servlet.FilterChain;
import javax.servlet.FilterConfig;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.ServletRequest;
import javax.servlet.ServletResponse;
import javax.servlet.http.HttpServletRequest;

public final class ExampleFilter implements Filter {


private String attribute = null;
private FilterConfig filterConfig = null;
public void destroy() {
System.out.println("enter filter.destory()");
this.attribute = null;
this.filterConfig = null;
}
public void doFilter(ServletRequest request, ServletResponse response,
FilterChain chain)
throws IOException, ServletException {
System.out.println("enter filter.doFilter()");
// Store ourselves as a request attribute (if requested)
if (attribute != null)
request.setAttribute(attribute, this);

// Time and log the subsequent processing
long startTime = System.currentTimeMillis();
chain.doFilter(request, response);
long stopTime = System.currentTimeMillis();
String url = ((HttpServletRequest)request).getRequestURI();
filterConfig.getServletContext().log
(this.toString() + "(" + url + "): " + (stopTime - startTime) +
" milliseconds");
}

public void init(FilterConfig filterConfig) throws ServletException {

System.out.println("enter filter.init()");
this.filterConfig = filterConfig;
this.attribute = filterConfig.getInitParameter("attribute");

}
public String toString() {

if (filterConfig == null)
return ("InvokerFilter()");
StringBuffer sb = new StringBuffer("InvokerFilter(");
sb.append(filterConfig);
sb.append(")");
return (sb.toString());
}
}


...全文
297 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
pyyukiki 2003-11-20
  • 打赏
  • 举报
回复
up
CoolAbu 2003-11-20
  • 打赏
  • 举报
回复
配置是正确的,你刷新时看看Log文件中记录的时间有没有变化。

81,122

社区成员

发帖
与我相关
我的任务
社区描述
Java Web 开发
社区管理员
  • Web 开发社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧