首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > J2EE开发 >

Filter为何会在一次请求执行doFilter()多次呢

2013-04-05 
Filter为什么会在一次请求执行doFilter()多次呢?本帖最后由 zhb200621 于 2013-04-02 14:10:41 编辑SSH项

Filter为什么会在一次请求执行doFilter()多次呢?
本帖最后由 zhb200621 于 2013-04-02 14:10:41 编辑 SSH项目,
log4j打出的线程名为http-apr-8080-exec-1,http-apr-8080-exec-2,...,http-apr-8080-exec-n等,
debug看这些线程于org.apache.catalina.startup.Bootstrap下均为Daemon Thread。
这些线程主要作用是什么?
浏览器访问http://127.0.0.1:8080/project时,页面一次请求调用自定义Filter(如编码过滤器)的次数是1次;
当访问系统的其他链接时,一次请求调用Filter的次数都在一次以上。为什么?
filter-mapping的url-pattern配的是/*  filter thread
[解决办法]
log4j打出的线程名为http-apr-8080-exec-1,http-apr-8080-exec-2,...,http-apr-8080-exec-n等
这个请你在描述清楚下。Tomcat会根据配置,决定提供服务的线程数量。应该就是上面这些线程。我用到过 Tomcat 6 只是线程名称和你的不同罢了。

至于Filter调用的话,一个HTTP请求过来,你自己的Filter会被调用一次,但是返回去的HTML页面中也会包含你引用的js啊 CSS,这时候浏览器就又发HTTP请求过来了,让服务器传送这些js
css给他。因为你配置了/*,所以Filter就又执行了下。

热点排行