filterchain.dofilter的简单介绍
java过滤器中实现Filter的类怎么写
web.xml配置文件
SessionFilter
com.qhit.system.tools.SessionFilter
SessionFilter
/*
java类
public class ConnFilter extends HttpServlet implements Filter {
public void doFilter(ServletRequest request,ServletResponse response,
FilterChain filterchain) throws IOException,ServletException
{
try
{
filterchain.doFilter(request,response);此处为过滤链 理解为请求通过该过滤继续前行 可在此处加上判断 如果TRUE执行该语句 有过FALSE 则直接跳转其他页面 常用于判断是否有权限进入某页面
}
finally
{
DBUtils.close();
}
}
Java:为什么这个Filter代码中跳转的后面不使用chain.doFilter()呢?
sendRedirect 直接返回登录页面啦
chain 是将执行权力交给下一个filter或者action的意思 意味着这个拦截器通过啦,入股都写chain.doFilter(request, response);这个的话那你的filter也就没啥用了,通过不通过都进入下一步了

filter中 如果运行时走 chain.doFilter(req, res);这行代码,它将提交到哪里进行处理 这个提交路径写在哪儿
filter如果走chain的话,通过chain.doFilter(request,response)这个方法会立即跳转到被拦截的servlet并且执行完还要再返回filter.chain相当于一扇门,从这扇门出去再从这扇门回来.调用filter的方法就是在web.xml中配置,需要配置一个与你需要拦截的servlet相同的url-pattern.
!-- 配置一个过滤器 --
filter
filter-namesuibianxie/filter-name
filter-classcom.etoak.filter.MyEncoding/filter-class
!-- 配置一个私有参数 --
init-param
param-namemycode/param-name
param-valuegbk/param-value
/init-param
/filter
!-- 拦截的先后顺序和mapping的顺序有关 --
filter-mapping
filter-namesuibianxie/filter-name
!-- 注意这里和要拦截的servlet的url-pattern必须一致,等于是过滤器
抢在servlet之前拦截住了 --
url-pattern/servlet/Test/url-pattern
/filter-mapping
!-- 配置第二个过滤器 --
filter
filter-namesuibianxie2/filter-name
filter-classcom.etoak.filter.Naming/filter-class
/filter
filter-mapping
filter-namesuibianxie2/filter-name
url-pattern/servlet/Test/url-pattern
/filter-mapping
servlet
servlet-nameTest/servlet-name
servlet-classcom.etoak.servlet.Test/servlet-class
/servlet
servlet-mapping
servlet-nameTest/servlet-name
url-pattern/servlet/Test/url-pattern
/servlet-mapping
关于tomcat的filter,调用chain.doFilter(request, response)就出现404错误 不调用就什么都不显示
你的web.xml中少了一部配置吧,调用过滤器的时候不是直接访问这个servlet,而是在你访问其他进行业务处理的servlet时自动调用的,你调用过滤器的servlet没有跳转页面所以404了
servlet 过滤器执行完chain.doFilter(req, rep);之后再去执行什么代码
在调用servlet的service()方法之前,容器会先创建一个filterchain,并把servlet传入这个filterchain对象,作为其内部参数。创建这个filter chain的时候,会根据请求的uri,把符合条件的filter加入到这个chain里。紧接着就调用这个filter chain的doFilter方法。这个filter chain的doFilter方法就会按顺序(在web.xml定义的顺序)调用各个filter的doFilter方法。当所有的filter的doFilter方法都调用完以后,才会调用servlet的service方法。