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

网站建设实训报告建议西安网站建设公司排行榜

网站建设实训报告建议,西安网站建设公司排行榜,做网站大概价格,营销的方法手段有哪些分析: 过滤器链的调用过程 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/263357.html

相关文章:

  • 国外优秀网页设计欣赏木卢seo教程
  • 海淘网官网入口长尾词seo排名
  • 洛阳有哪些做网站的公司深圳全网营销推广平台
  • 新建建设兵团科技局网站google关键词搜索量
  • 先锋网站大全免费b2b网站域名查询万网
  • 乐清有那些网站电脑培训班附近有吗
  • 长沙网站优化公司促销活动推广方法有哪些
  • 电子商务网站建设与管理课程评价互联网营销培训课程
  • 优才网站建设百度app安装下载
  • 怎么做一直弹窗口网站如何做网站建设
  • 域名和网站的区别河南网站定制
  • 长沙做网站哪家公司好合肥网站维护公司
  • 正规的咨询行业网站策划怎么做网络推广优化
  • 上海普陀门户网站网络营销的发展现状及趋势
  • 解决网关键词智能优化排名
  • 新手学纪事本html代码做网站博客营销
  • 一流的微商城网站建设百度广告推广怎么收费了
  • 百度的网站域名不收费的小说网站排名
  • 手机网站开发标准产品推广网站哪个好
  • 柳市外贸网站建设希爱力双效片骗局
  • 仿一个网站要多少钱厦门seo怎么做
  • 私彩网站建设优化人员是什么意思
  • 上海做兼职哪个网站自己怎么免费做百度推广
  • 铁岭网站建设公司西安网站seo排名优化
  • kegg网站可以做富集分析吗网站源码平台
  • 自己做整个网站的流程清远网站seo
  • 竞网做的网站怎么样关键词优化怎么弄
  • 承接网站建设服务营销方案100例
  • 东阳网站推广外贸建站
  • 空间 两个网站广州seo快速排名