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负责控制运行的进程的请求。

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

时间: 2024-08-05 17:38:08

Webx框架:Pipeline基本介绍的相关文章

Webx框架:Spring Schema 和 Spring Ext

webx诞生的原因是当时市面上没有好用的web框架.现在的Web框架有很多,然后它们背后的思想都是相似的,而且越来越趋同. Spring Schema 在传统的spring中,配置bean时需要手动去指定具体的实现类是什么,参数有哪些.这样开发者需要记住具体的实现类.参数名称.含义等,会带来很大的记忆负担.为了解决这个问题,SpringSchema出现了.它的解决办法是将所有的参数转换成标签.标签是可以通过XML Schema定义的.这样只需要记忆标签的名字即可.标签的名称一般都很短,因此减轻了

Webx框架:RequestContext详解

RequestContext RequestContext可以看成request和response的合体.多个RequestContext还可以串起来,就像Filter链条一样.每个外层RequestContext都会在内层RequestContext的基础上增加功能.在设计模式中这叫装饰器. RequestContext种类有basic/buffered/lazy-commit/parser/rewrite/session/set-locale功能.后面还会具体介绍. 下面是配置方法: <se

Webx框架自带的petstore

Webx框架:http://openwebx.org/ petstore:webx3/webx-sample/petstore/tags/3.0/petstore 编译之后:mvn jetty:run即可, 访问:http://localhost:8081/ Webx MVC(以webx3为基础) 1.webx3的入口点 <filter> <filter-name>webx</filter-name> <filter-class>com.alibaba.ci

Universal-Image-Loader(UIL)图片加载框架使用简单介绍

这个也是最近项目中使用到的第三方图片加载框架,在这里也自己总结一下,简单的介绍一些使用的方式. UIL图片加载框架特点 简介: 项目地址:https://github.com/nostra13/Android-Universal-Image-Loader 异步加载图片或者加载大量图片经常会遇到图片错乱或者OOM等相关问题.UIL图片缓存,目前使用最广泛的图片缓存,支持主流图片缓存的绝大多数特性. 我们看下该图片加载的三级缓存原理 特点: 1.多线程下载图片,图片可以来源于网络,文件系统,项目文件

Rookey.Frame v1.0 视频教程之三发布-框架核心思想介绍

本期发布视频: (三)Rookey.Frame v1.0框架核心思想 介绍了Rookey.Frame v1.0框架搭建的核心思想,将框架核心思想理解清楚,对框架运行就会得心应手 官方视频教程: http://rookey.gotoip2.com/Page/Example.html?page=Example&flag=Video 下期视频将介绍如何通过Rookey.Frame v1.0极速开发平台项目结构及核心代码介绍

Webx框架:会话管理

在Servlet中,Session和Cookie是分开的.Session一般保存在内存中,当然也可以保存在数据库等其他地方.如果保存在内存中,对于服务集群来说就需要解决Session共享的问题.如果保存在数据库,就存在单点故障.性能差等问题. webx提供了会话框架,将session这样复杂的问题统一进行解决.在webx框架中,主张将cookie合并到session中,再通过规则,路由到cookie或者session中.cookie保存在客户端,session保存在服务端,它们的区别这里就不赘述

我的WebX框架学习总结与心得分享

最近学习了webx框架, 利用博客园跟大家分享一下自己的学习心得; 周建旭 2014-08-21 网上关于webx的资料少的可怜, 怎么办?  这种情况下不用去求助别人求人只会耽误时间, 不用畏惧; 看文档写demo 就ok了; API是最好的资料, webx官方有个pdf的中文文档提供下载, 建议在学webx之前, 先整体浏览一遍文档以便于把握webx框架的大体脉络, 第一遍看的过程不必钻牛角尖 ; 然后结合淘宝官方Michael Zhou的Petstore(宠物商店)例子对比一下文档(那块不

ThinkPHP框架视图详细介绍 View 视图--模板(九)

原文:ThinkPHP框架视图详细介绍 View 视图--模板(九) 视图也是ThinkPHP使用的核心部分: 一.模板的使用 a.规则 模板文件夹下[TPL]/[分组文件夹/][模板主题文件夹/]和模块名同名的文件夹[Index]/和方法名同名的文件[index].html(.tpl) -->更换模板文件的后缀名(修改配置文件) 'TMPL_TEMPLATE_SUFFIX'=>'.tpl',//更改模板文件后缀名,默认是html b.修改模板文件目录层次 Tpl/Index/index.ht

JavaScript单元测试框架JsUnit基本介绍和使用

JavaScript单元测试框架JsUnit基本介绍和使用 XUnit framework XUnit是一套标准化的独立于语言的概念和结构集合,用于编写和运行单元测试(Unit tests). 每一个语言都有一个用于单元测试的XUnit框架,比如Java有JUnit, C++有CppUnit, PHP有PHPUnit, Oracle SQL有UTPL/SQL. JsUnit JsUnit的官网: http://jsunit.net/ JsUnit遵循XUnit的一些惯例: 单元测试在JsUnit

[转帖]微服务框架Spring Cloud介绍 Part2: Spring Cloud与微服务

微服务框架Spring Cloud介绍 Part2: Spring Cloud与微服务 http://skaka.me/blog/2016/08/03/springcloud2/ AUG 3RD, 2016 10:09 PM | COMMENTS 之前介绍过微服务的概念与Finagle框架, 这个系列介绍Spring Cloud. Spring Cloud还是一个相对较新的框架, 今年(2016)才推出1.0的release版本. 虽然Spring Cloud时间最短, 但是相比我之前用过的Du