0. WebX项目目前已开源,

  项目开源地址:https://github.com/webx/citrus-sample.git

  项目参考文档:http://www.openwebx.org/docs/

1. 为什么不使用SpringMVC,而是使用WebX?

  当初阿里巴巴建站的时候,并没有现在这么成熟的多种框架技术(springMVC等);其次,WebX这些年也已经经受住了诸如‘双十一’的大访问,高并发的考验;但我认为最为重要的一点还是为了安全。对于开源的代码,没有人能保证其安全性或对其进行严格的渗透测试。因此,漏洞可以通过「导入代码」的后门入侵到内部系统。造成了企业对这些漏洞一无所知,攻击者却对它们了如指掌的现状。[2014年注明的OpenSSL漏洞就是这种情况]。

2. WebX简介

  WEBX就是把页面与Service层之间的一些Servlet等公共的东西抽象出来,提供相应的服务以提高开发效率,可以看出,webx和传统的servlet-action模式的HettpServlet为基础,对其中的公用的抽象整理后,得到一个轻量级的web开发框架。webx页面使用了velocity模板,WEB层使用的是WEBX框架里面的TemplateAction, TemplateScreen, AbstractModule, TemplateControl,解决了操作和页面的跳转。持久层使用ibatis,Bean容器使用的是Spring。

  如上图所示是WebX的层次结构,从内到外,springExt基于Spring,提供了扩展组件的能力;WebX Framework则基于Servlet API,提供基础服务。WebX Turbine基于WebX Framework,实现具体的网页功能。(turbine['tɜːbaɪn; -ɪn],涡轮机,涡轮)。

  一个好的框架,并不是实现了所有的功能,而是具有超强的扩展能力

3. 项目结构简单介绍

  由于webx是基于准的JavaEE Web用范,因此它的目录结构是我们均熟悉的B/S构。

4. WebX的请求执行流程

  1.对于URL:http://localhost:7001/petstore/user/account/edit.htm(htm是为了兼容过去的DOS命名格式存在的,在效果上没有区的,HTM 为DOS三字符文件扩展名时代而来;HTML为Windows时代支持多字符扩展名)

  我们知道http(协议)、localhost(Server name可以在C:\Windows\System32\drivers\etc\hosts中来配置)、7001(端口号)、petstore(context path)、user(conponent path)、account/edit.htm(servlet path)、account/edit.vm(target)。

  2.根据端口号,服务器把该请求交给petstore应用,再根据/account/edit.htm(Servlet Path路径)。在web.xml中把*.htm映射到Webx Controller Servlet,所以Webx Controller Servlet就接管了这个请求。

  3.Webx Controller Servlet激活pipeline,而用AnalyzeURLValve分析/edit.htm是什么意思。根据webx默认的映射,/edit.htm被映射成/ edit.vm。

  4.根据target查找screen模板:/screen/edit.vm,假如target的值:/xxx/yyy/edit.vm,那么,valve会:在/templates/screen目下,找到/xxx/yyy/edit.vm模板。然后依次查找screen类:xxx.yyy.Edit (如果找不到,下一个)、xxx.yyy.Default (如果找不到,下一个)、xxx.Default (如果找不到,下一个)、Default (如果找不到,下一个)、TemplateScreen (系统默screen,不可能找不到的)。

  5.screen类,渲染screen模板。如果存在layout布局,渲染layout,screen类,并渲染screen模板。根据target查找layout模板,渲染layout模板。

  6.渲染在layout模板中引用的两个control:head.vm:在head.car中查找/control/head.vm;bottom.vm :在bottom.car中查找/control/bottom.vm。

5. WebX处理页面的基本流程

  http://www.cnblogs.com/goofy/articles/2115573.html

6. WebX应用的启动流程

  http://www.cnblogs.com/logzhilong/p/3246476.html

  http://www.cnblogs.com/Vae1990Silence/p/4642919.html

  http://wutianyi.iteye.com/blog/1087887

参考博客地址:

[1] http://wenku.baidu.com/link?url=YYp1019ut60Mze1rKyjwtyoLzJwyBLZS97hHQk3eWHz1CGQBFgMt4qXOGfDUCUbcCeDcM18fO6iLLWD_voFpabLW2gEzvsd9G5JCQdH9uC3

[2] http://www.openwebx.org/docs/logging.html

[3] http://blog.csdn.net/free4294/article/details/38456003

阿里巴巴开源技术 WebX的更多相关文章

  1. Alibaba阿里巴巴开源软件列表

    整理和分享我大阿里的开源项目的相关网址: Git Hub上的开源软件网址: 1.https://github.com/alibaba 阿里巴巴开源技术汇总:115个软件 2.https://yq.al ...

  2. 阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房) - agapple - ITeye技术网站

    阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房) - agapple - ITeye技术网站 阿里巴巴开源项目:分布式数据库同步系统otter(解决中美异地机房)

  3. 阿里巴巴开源Weex 开发教程

    Weex 是什么 Weex是阿里发布的一款用WEB方式开发原生app的开源产品 Weex能够完美兼顾性能与动态性,让移动开发者通过简捷的前端语法写出Native级别的性能体验,并支持iOS.安卓.Yu ...

  4. 平安银行在开源技术选型上的思考和实践 RocketMQ

    小结: 1. https://mp.weixin.qq.com/s/z_c5D8fvHaYvHSczm0nYFA 平安银行在开源技术选型上的思考和实践 平安银行·吴建峰 阿里巴巴中间件 3月7日 随着 ...

  5. 阿里巴巴开源项目汇总-(JAVA)

    来源:https://segmentfault.com/a/1190000017346799 1.分布式应用服务开发的一站式解决方案 Spring Cloud Alibaba Spring Cloud ...

  6. Google、亚马逊、微软 、阿里巴巴开源软件一览

    Google.亚马逊.微软 .阿里巴巴开源软件一览 大公司为什么要发布开源项目?一是开源能够帮助他人更快地开发软件,促进世界创新,主要是社会价值层面的考虑.二是开源能够倒逼工程师写出更好的代码.三是开 ...

  7. alibaba/fescar 阿里巴巴 开源 分布式事务中间件

    Fescar 是 阿里巴巴 开源的 分布式事务中间件,以 高效 并且对业务 0 侵入 的方式,解决 微服务 场景下面临的分布式事务问题. 示例:https://github.com/windwant/ ...

  8. 大V云集!参加首届阿里巴巴在线技术峰会的八大理由

    由阿里巴巴集团.阿里巴巴技术协会(ATA)和阿里云云栖社区联合举办的首届阿里巴巴在线技术峰会(Alibaba Online Technology Summit)将于7月19日-21日20:00-21: ...

  9. 阿里巴巴开源性能监控神器Arthas初体验

    如果问性能测试中最难的是哪部分,相信很多人会说“性能调优”.确实是这样,性能调优是一个非常复杂.技术含量很高的工作.涉及到的知识面很广.以我多年从业经验来看,在企业里,大多数的性能调优都是由开发架构师 ...

随机推荐

  1. 锋利的JQuery —— JQuery性能优化

    大图猛戳

  2. 带你走近AngularJS - 体验指令实例

    带你走近AngularJS系列: 带你走近AngularJS - 基本功能介绍 带你走近AngularJS - 体验指令实例 带你走近AngularJS - 创建自定义指令 ------------- ...

  3. lua以xpcall实现try/catch功能

    -- 打印错误信息 local function __TRACKBACK__(errmsg) ); print("-------------------------------------- ...

  4. Atitit 数据存储的数据表连接attilax总结

    Atitit 数据存储的数据表连接attilax总结 1.1. 三种物理连接运算符:嵌套循环连接.合并连接以及哈希连接1 1.2. a.嵌套循环连接(nested loops join)1 1.3. ...

  5. Atitit  ocr识别原理 与概论 attilax总结

    Atitit  ocr识别原理 与概论 attilax总结 1.1. Ocr的过程与流程1 1.2. OCR不同技术细分略有不同,但大概原理是一样的. 即主要技术过程是:二值化(又叫归一化)----- ...

  6. Tomcat源码阅读(二)初始化

    近来,我开始阅读tomcat的源码,感觉还挺清晰易懂:为了方便理解,我参考了网上的一些文章,把tomcat的组成归纳一下:整个tomcat的组成如下图所示: Tomcat在接收到用户请求时,将会通过以 ...

  7. MySql数据库乱码解决方法

    MySql数据库乱码解决方法 解决乱码问题一个原则:存取系统使用一致的编码规则. 多使用mysql的原生命令行,这样才能做更多的事情. ​ 第一步: 确认应用系统需要使用的编码 java的默认编码是跟 ...

  8. python--基础学习(二)判断 、循环、定义函数、继承、调用

    1.判断 if.elif 代码示范 # coding=utf-8 score = 90 if (score>=90): print("完美") print("优秀& ...

  9. [转载]UML用例图总结

    前言 用例图主要用来描述“用户.需求.系统功能单元”之间的关系.它展示一个外部用户能够观察到的系统功能模型图.用例图多用于静态建模阶段(主要是业务建模和需求建模),帮助开发团队以一种可视化的方式理解系 ...

  10. Pure – 赞!轻量的、响应式的 CSS 模块集

    Pure 是一组轻量的,响应式的 CSS 模块,您可以使用在任何的 Web 项目中.充分考虑了移动设备中的使用,保持文件体积尽量小,每行 CSS 都进行了仔细的考虑. Pure 基于 Normaliz ...