filterchain.dofilter的简单介绍

http://www.itjxue.com  2023-02-15 07:37  来源:未知  点击次数: 

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方法。

(责任编辑:IT教学网)

更多

推荐word文章