【发布时间】:2012-08-14 03:20:18
【问题描述】:
在servlet过滤器中,filterChain.doFilter(request, response);应该将请求传递给链中的下一个。
但请考虑以下两个代码:
代码 1:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException
{
filterChain.doFilter(request, response);
try
{
Thread.sleep(20000);
}
catch(Exception e)
{
}
}
代码 2:
public void doFilter(ServletRequest request, ServletResponse response, FilterChain filterChain) throws IOException, ServletException
{
try
{
Thread.sleep(20000);
}
catch(Exception e)
{
}
filterChain.doFilter(request, response);
}
两个过滤器的执行方式相同。即在服务请求之前两者都需要 20 秒。
但实际上应该发生的是Code1 应该立即发球,Code2 应该在 20 秒后发球。
为什么过滤器会出现这种歧义?
【问题讨论】:
标签: jsp tomcat servlets webserver servlet-filters