当前位置: 首页 > wzjs >正文

GMC中网站建设对订单有影响吗西安互联网推广公司

GMC中网站建设对订单有影响吗,西安互联网推广公司,域名除了做网站还能做什么,热门电影推荐分析: 过滤器链的调用过程 A过滤器调用chain.doFilter此时会进入到下一个过滤器 B过滤器继续调用chain.doFilter会继续进入下一个过滤器 当所有过滤器都执行完成后,会进入目标方法。 既然chain.doFilter能进入下一个过滤器,那本质上就是方法的…

分析:
过滤器链的调用过程
A过滤器调用chain.doFilter此时会进入到下一个过滤器
B过滤器继续调用chain.doFilter会继续进入下一个过滤器
当所有过滤器都执行完成后,会进入目标方法。
既然chain.doFilter能进入下一个过滤器,那本质上就是方法的调用压栈和弹栈,一个方法的调用入口会执行完成所有的方法栈后才完成。
所以chain内肯定知道下一个filter是哪个,同时chain肯定保存了最终的目标执行对象。
基于以上分析,chain内部维护了一个过滤器集合,并知道下一个过滤器是哪个。

运行结果:首先,任何编程语言在调用一个方法,都会层层调用多层方法栈。ABCDE....其实,责任链设计模式无非就是通过代码解耦,将复杂的逻辑线性化。将一个一个的调用串行化。FilterChain将责任链的执行权交给每个过滤器,由过滤器决定是否执行下一个过滤器。
@Data
@Builder
public class HttpServletRequest {private String method;private String uri;}
public class TargetController {public void target() {System.out.println("执行了最终的目标方法");}}
public interface Filter {void doFilter(FilterChain filterChain, HttpServletRequest request) throws Exception;}
public class AuthFilter implements Filter {@Overridepublic void doFilter(FilterChain filterChain, HttpServletRequest request) throws Exception {System.out.println("auth filter before");filterChain.doFilter(request);System.out.println("auth filter after");}}
public class LogFilter  implements Filter{@Overridepublic void doFilter(FilterChain filterChain, HttpServletRequest request) throws Exception {System.out.println("log filter before ");filterChain.doFilter(request);System.out.println("log filter after ");}
}
@Data
@Builder
public class FilterChain {private Integer index;private List<Filter> filters;//执行最终目标方法的对象private Object target;//执行最终的目标方法private Method method;//执行最终目标方法的private Object[] args;public void doFilter(HttpServletRequest request) throws Exception {//获取当前要执行的过滤器if (index == null){index = 0;}if (filters == null || filters.size() <= 0){return;}if (index >= filters.size()){//执行最终的目标方法method.invoke(target,args);return;}//获取过滤器Filter filter = filters.get(index++);filter.doFilter(this,request);}}
public class Test {public static void main(String[] args) throws Exception {FilterChain filterChain = FilterChain.builder().filters(Arrays.asList(new AuthFilter(), new LogFilter())).index(0).target(new TargetController()).method(TargetController.class.getMethod("target")).args(null).build();filterChain.doFilter(new HttpServletRequest("GET","/test"));}}
http://www.dtcms.com/wzjs/373668.html

相关文章:

  • 南昌网站设计特色网页模板素材
  • 建e网室内设计效果图门厅关于seo的行业岗位有哪些
  • 做网站用地图网站不收录怎么办
  • 南昌市有帮做网站的吗如何推广一个网站
  • 吴中区做网站的公司信息流广告接单平台
  • 网站建设怎么申请域名广东省广州市白云区
  • 网站中怎么做视频直播专业制作网页的公司
  • 学做php网站旺道seo推广
  • 如何做网赌网站厦门网站建设
  • 网站开发公司盈利站外推广渠道有哪些
  • 做动态图片的网站搜索引擎排名的三大指标
  • 商城网站建设定制网站建设软文推广代表平台
  • 做百度推广送网站一个网站的seo优化有哪些
  • 云服务器做网站要备案吗韩国电视剧
  • 分销pc网站网时代教育培训机构怎么样
  • 吉林省党风廉政建设官方网站点击seo软件
  • 青岛代理记账公司专业seo排名优化费用
  • 跨境支付互联互通游戏优化大师下载安装
  • 用搬瓦工做网站潍坊seo招聘
  • 计算机软件开发培训seo独立站优化
  • h5如何做多页面网站抖音推广怎么做
  • 做网站前的准备世界杯比分查询
  • 网站页面布局用什么做网络营销策划书案例
  • 八大处做双眼预约网站磁力屋 最好用
  • 苏州企业网站建设设计网络推广法
  • 亚马逊欧洲站vat怎么申请做一个网站的步骤
  • 网站的布局分类服务营销的七个要素
  • 东莞建网站bt磁力种子搜索引擎
  • 有哪些网站是flash型网站分享
  • 福田做商城网站建设哪家技术好策划是做什么的