dofilter在java中_java 过滤器Filter中chain.doFilter()之前和之后代码的执行顺序
过滤器拦截到响应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()之前和之后代码的执行顺序相关推荐
- java 过滤器执行图_「filterchain」java 过滤器Filter中chain.doFilter()之前和之后代码的执行顺序 - seo实验室...
filterchain 过滤器拦截到请求之后,首先是执行doFilter()方法中chain.doFilter()之前的代码,然后放弃权限给下一个过滤器或者serverlet等等,最后才执行chain ...
- Java中的过滤器Filter
本文用于学习所用,有不足及错误之处欢迎指出和补充. 目录 一:Filter简介 二:关于Filter (一)如何使用Filter进行过滤 (二)过滤器链 (FilterChain) (三)Filter ...
- filter过滤器_Java过滤器Filter讲解(Java基础)
Java过滤器Filter讲解(Java基础) 双体的小伙伴们,Java过滤器Filter讲解(Java基础).初学JAVA的的学者们,今天满满的干货,跟随我一起学习吧. 超能就在这里 ...
- java过滤器filter过滤某个包_Java过滤器Filter使用详解
过滤器 过滤器是处于客户端与服务器资源文件之间的一道过滤网,在访问资源文件之前,通过一系列的过滤器对请求进行修改.判断等,把不符合规则的请求在中途拦截或修改.也可以对响应进行过滤,拦截或修改响应. 如 ...
- 解决springmvc在multipart/form-data方式提交请求在过滤器Filter中获取不到参数的问题
解决springmvc在multipart/form-data方式提交请求在过滤器Filter中获取不到参数的问题 参考文章: (1)解决springmvc在multipart/form-data方式 ...
- java子类代码块_java中父类子类静态代码块、构造代码块执行顺序
父类静态(代码块,变量赋值二者按顺序执行) 子类静态 父类构造代码块 父类构造方法 子类构造代码块 子类构造方法 普通方法在实列调用的时候执行,肯定位于上面之后了 //父类A public class ...
- Java web—Servlet过滤器(Filter)
前言: 过滤器是Servlet中一个非常重要的组成部分,进行WEB开发时无不用到过滤器:因此这篇blog来单独总结下关于过滤器的知识点. 一.首先来了解一下什么是过滤器: 下面这句话引 ...
- 排队器拦截_过滤器(Filter)和拦截器(Interceptor)的执行顺序和区别
首先建立一个SpringBoot工程,增加一个IndexController供测试使用. @Controller public class IndexController { @GetMapping( ...
- java代码块执行顺序_Java笔记 | Java代码块执行顺序测试
最近笔试常常遇到考察Java代码块执行顺序的题目,网上查看博客错漏百出,特地自己测试了一下. 如有错漏,希望路过的大佬指出来,以便我进行更改. 先上代码吧! public class ClassA { ...
最新文章
- 好像最近买了很多东西
- Android—开发过程中的相关注意事项
- Spring Cloud Sidecar –节点初始化
- linux系统之间无密传输,scp采用无密码在两台linux服务器之间传输数据(示例代码)...
- Rust是如何实现内存安全的--理解RAII/所有权机制/智能指针/引用
- mac mini u盘安装系统_U盘安装系统教程
- 我的管理实践---《人件》读后感
- db2 正则匹配_SQL正则表达式
- 在Android上实现汉字笔顺动画效果
- 炼丹笔记三:数据增强
- anaconda conda环境管理命令
- 课工场论坛列表发帖制作
- 详解Spark Streaming的Graceful Shutdown
- 智能学习 | MATLAB实现Bee-CNN蜜蜂算法优化卷积神经网络图像分类预测
- MOGRT视频制作库 Premiere遮罩/转场/特效视频剪辑效果模板库预设
- 例题5.20 秦始皇修路 LA5713
- http协议1.0和1.1的区别
- 2020CSP初赛试题答案解析
- Vim 分屏功能+无插件Vim编程技巧
- 双向可控硅过零触发电路
热门文章
- 调焦后焦实现不同距离成像_分不清对焦和焦距?一篇文章让你理清
- 交叉编译器:arm-linux-gcc-3.4.1 xiazia,ubuntu18.04.1安装交叉编译器 arm-linux-gcc-4.4.3
- JS实现拖拽并解决拖拽过程中鼠标抬起仍旧处于拖拽状态问题
- 【RDP】win10家庭版 RDP wrapper 出现 not listening not supported
- 榆熙电商:拼多多补单发货要注意什么?
- 删除excel中所有公式并保留数值
- 数码相框(LCD、I2C)
- (转载)安卓官方开发网站
- 《奔跑吧Linux内核(第二版)》第五章笔记
- robotac属于a类还是b类_2018考研国家线:a类b类线的区别及划分