zoukankan      html  css  js  c++  java
  • Webx框架:Pipeline基本介绍

    Pipeline。

    它是管道的含义。一个管道阀门可以安装非常多。有许多可能的分支。它是用来控制页处理。它需要在被定义pipeline.xml文件。该文件是为每个阀的标签。该文件可以放一些简单的控制语句。在项目。这条管线有以下配置足够好。


    <services:pipeline xmlns="http://www.alibaba.com/schema/services/pipeline/valves">
      <!-- 初始化 turbine rundata,并在 pipelineContext 中设置可能会用到的对象(如rundata、utils),以便 valve 取得。 -->
      <prepareForTurbine />
      
      <!-- 设置日志系统的上下文,支持把当前请求的详情打印在日志中。

    --> <setLoggingContext /> <!-- 分析URL,取得target。

    --> <analyzeURL homepage="homepage" /> <!-- 检查 csrf token,防止 csrf 攻击和反复提交。假如 request 和 session 中的 token 不匹配,则出错,或显示 expired 页面。 --> <checkCsrfToken /> <!-- 这里为什么要用循环呢? --> <loop> <choose> <when> <!-- 运行带模板的screen,默认有layout。 --> <pl-conditions:target-extension-condition extension="null, vm, jsp" /> <performAction /> <performTemplateScreen /> <renderTemplate /> </when> <when> <!-- 运行不带模板的screen,默认无layout。

    --> <pl-conditions:target-extension-condition extension="do" /> <performAction /> <performScreen /> </when> <otherwise> <!-- 将控制交还给 servlet engine。 --> <exit /> </otherwise> </choose> <!-- 假如 rundata.setRedirectTarget() 被设置,则循环,否则退出循环。

    --> <breakUnlessTargetRedirected /> </loop> </services:pipeline>


    为什么要引入Pipeline?这是由于传统的Filter受到限制,仅仅能訪问或者改动HttpServletRequest、HttpServletResponse、ServletContext三个对象,不能訪问应用程序中的状态。流程控制过于简单,仅仅能继续运行或者终止运行,没有循环、分支等机制。还有Filter无法訪问其它Filter的状态,在性能优化的时候比較困难。


    为了克服Filter的缺点。Webx引入了RequestContext和Pipeline。当中RequestContext负责訪问和改动request和response对象,和Pipeline负责控制运行的进程的请求。

    版权声明:本文博客原创文章。博客,未经同意,不得转载。

  • 相关阅读:
    计算表达式的值并输出,表达式由若干个数字和运算符(只包含加号和减号)构成(C版和python版)
    联机分析场景的关键特征(OLAP)
    C语言字符串去掉指定字符
    主机或者路由器是怎样知道应当在MAC帧的首部填入什么样的硬件地址?(ARP)
    linux虚拟机重置root密码
    python获取时间串的方法
    centos离线安装docker
    前端JavaScript规范
    JQuery中的Deferred-详解和使用
    垂直居中实用三种方式
  • 原文地址:https://www.cnblogs.com/gcczhongduan/p/4678675.html
Copyright © 2011-2022 走看看