过滤器拦截到响应url的请求后会先执行doFilter()方法中chain.doFilter()之前的代码,然后执行下一个过滤器或者servelt。紧接着执行chain.doFilter()之后的代码。

一下为两个过滤器的执行顺序:

过滤器一:

packagecom.rskd_yswb.lib.filter;import javax.servlet.*;importjava.io.IOException;

public class HttpRequestAndResponseFilter implementsFilter {privateFilterConfig filterConfig;public voiddestroy() {

}public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throwsServletException, IOException {

resp.setCharacterEncoding(this.filterConfig.getInitParameter("encoding"));

System.out.println("HttpRequestAndResponseFilterBefore");

chain.doFilter(req, resp);

System.out.println("HttpRequestAndResponseFilterAfter");

}public void init(FilterConfig config) throwsServletException {this.filterConfig =config;

}

}

过滤器二:

packagecom.rskd_yswb.lib.filter;import javax.servlet.*;importjava.io.IOException;public class Test2Filter implementsFilter {public voiddestroy() {

}public void doFilter(ServletRequest req, ServletResponse resp, FilterChain chain) throwsServletException, IOException {

System.out.println("Test2FilterBefore");

chain.doFilter(req, resp);

System.out.println("Test2FilterAfter");

}public void init(FilterConfig config) throwsServletException {

}

}

要执行的servlet:

packagecom.rskd_yswb.servelt;importcom.rskd_yswb.javabean.db.ConsumerEntity;importcom.rskd_yswb.lib.db.DBConnection;importcom.rskd_yswb.lib.db.GenerateSqlStatement;importcom.rskd_yswb.lib.freemarker.FreeMarker;importfreemarker.template.Template;importfreemarker.template.TemplateException;importorg.apache.commons.dbutils.QueryRunner;importorg.apache.commons.dbutils.handlers.BeanMapHandler;importorg.apache.logging.log4j.LogManager;importorg.apache.logging.log4j.Logger;importjavax.servlet.annotation.WebServlet;importjava.io.IOException;importjava.io.Writer;importjava.sql.Connection;importjava.util.HashMap;importjava.util.Map;public class IndexServlet extendsjavax.servlet.http.HttpServlet {private static Logger logger = LogManager.getLogger(IndexServlet.class);protected void doPost(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throwsjavax.servlet.ServletException, IOException {

doGet(request, response);

}protected void doGet(javax.servlet.http.HttpServletRequest request, javax.servlet.http.HttpServletResponse response) throwsjavax.servlet.ServletException, IOException {

String sql= new GenerateSqlStatement().select("*").from("consumer").get();try{

Map consumer = new QueryRunner().query(DBConnection.getConnection(), sql, new BeanMapHandler(ConsumerEntity.class, "username"));

}catch(Exception e) {

logger.debug("IndexServlet Error:" +e.getMessage());

}

Map root = new HashMap();try{

FreeMarker.getFreemarker().getTemplate("index.ftl").process(root, response.getWriter());

System.out.println("请求处理中");

}catch(TemplateException e) {

logger.debug("IndexServlet Error:" +e.getMessage());

}

}

}

web.xml配置内容如下:

HttpRequestAndResponseFilter

com.rskd_yswb.lib.filter.HttpRequestAndResponseFilter

encoding

utf8

Test2Filter

com.rskd_yswb.lib.filter.Test2Filter

HttpRequestAndResponseFilter

/*

Test2Filter

/*

IndexServlet

com.rskd_yswb.servelt.IndexServlet

IndexServlet

/index

IndexServlet

filter的执行顺序如同web.xml中的配置的顺序,在浏览器输入http://localhost:8080/index 控制台将打印如下内容:

HttpRequestAndResponseFilterBefore

Test2FilterBefore

请求处理中

Test2FilterAfter

HttpRequestAndResponseFilterAfter

dofilter在java中_java 过滤器Filter中chain.doFilter()之前和之后代码的执行顺序相关推荐

  1. java 过滤器执行图_「filterchain」java 过滤器Filter中chain.doFilter()之前和之后代码的执行顺序 - seo实验室...

    filterchain 过滤器拦截到请求之后,首先是执行doFilter()方法中chain.doFilter()之前的代码,然后放弃权限给下一个过滤器或者serverlet等等,最后才执行chain ...

  2. Java中的过滤器Filter

    本文用于学习所用,有不足及错误之处欢迎指出和补充. 目录 一:Filter简介 二:关于Filter (一)如何使用Filter进行过滤 (二)过滤器链 (FilterChain) (三)Filter ...

  3. filter过滤器_Java过滤器Filter讲解(Java基础)

    Java过滤器Filter讲解(Java基础)    双体的小伙伴们,Java过滤器Filter讲解(Java基础).初学JAVA的的学者们,今天满满的干货,跟随我一起学习吧.      超能就在这里 ...

  4. java过滤器filter过滤某个包_Java过滤器Filter使用详解

    过滤器 过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改.判断等,把不符合规则的请求在中途拦截或修改.也可以对响应进行过滤,拦截或修改响应. 如 ...

  5. 解决springmvc在multipart/form-data方式提交请求在过滤器Filter中获取不到参数的问题

    解决springmvc在multipart/form-data方式提交请求在过滤器Filter中获取不到参数的问题 参考文章: (1)解决springmvc在multipart/form-data方式 ...

  6. java子类代码块_java中父类子类静态代码块、构造代码块执行顺序

    父类静态(代码块,变量赋值二者按顺序执行) 子类静态 父类构造代码块 父类构造方法 子类构造代码块 子类构造方法 普通方法在实列调用的时候执行,肯定位于上面之后了 //父类A public class ...

  7. Java web—Servlet过滤器(Filter)

    前言:         过滤器是Servlet中一个非常重要的组成部分,进行WEB开发时无不用到过滤器:因此这篇blog来单独总结下关于过滤器的知识点. 一.首先来了解一下什么是过滤器: 下面这句话引 ...

  8. 排队器拦截_过滤器(Filter)和拦截器(Interceptor)的执行顺序和区别

    首先建立一个SpringBoot工程,增加一个IndexController供测试使用. @Controller public class IndexController { @GetMapping( ...

  9. java代码块执行顺序_Java笔记 | Java代码块执行顺序测试

    最近笔试常常遇到考察Java代码块执行顺序的题目,网上查看博客错漏百出,特地自己测试了一下. 如有错漏,希望路过的大佬指出来,以便我进行更改. 先上代码吧! public class ClassA { ...

最新文章

  1. 好像最近买了很多东西
  2. Android—开发过程中的相关注意事项
  3. Spring Cloud Sidecar –节点初始化
  4. linux系统之间无密传输,scp采用无密码在两台linux服务器之间传输数据(示例代码)...
  5. Rust是如何实现内存安全的--理解RAII/所有权机制/智能指针/引用
  6. mac mini u盘安装系统_U盘安装系统教程
  7. 我的管理实践---《人件》读后感
  8. db2 正则匹配_SQL正则表达式
  9. 在Android上实现汉字笔顺动画效果
  10. 炼丹笔记三:数据增强
  11. anaconda conda环境管理命令
  12. 课工场论坛列表发帖制作
  13. 详解Spark Streaming的Graceful Shutdown
  14. 智能学习 | MATLAB实现Bee-CNN蜜蜂算法优化卷积神经网络图像分类预测
  15. MOGRT视频制作库 Premiere遮罩/转场/特效视频剪辑效果模板库预设
  16. 例题5.20 秦始皇修路 LA5713
  17. http协议1.0和1.1的区别
  18. 2020CSP初赛试题答案解析
  19. Vim 分屏功能+无插件Vim编程技巧
  20. 双向可控硅过零触发电路

热门文章

  1. 调焦后焦实现不同距离成像_分不清对焦和焦距?一篇文章让你理清
  2. 交叉编译器:arm-linux-gcc-3.4.1 xiazia,ubuntu18.04.1安装交叉编译器 arm-linux-gcc-4.4.3
  3. JS实现拖拽并解决拖拽过程中鼠标抬起仍旧处于拖拽状态问题
  4. 【RDP】win10家庭版 RDP wrapper 出现 not listening not supported
  5. 榆熙电商:拼多多补单发货要注意什么?
  6. 删除excel中所有公式并保留数值
  7. 数码相框(LCD、I2C)
  8. (转载)安卓官方开发网站
  9. 《奔跑吧Linux内核(第二版)》第五章笔记
  10. robotac属于a类还是b类_2018考研国家线:a类b类线的区别及划分