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. 正则表达式匹配/data/misc/wifi/wpa_supplicant.conf的WiFi名称与密码

    正则表达式匹配/data/misc/wifi/wpa_supplicant.conf的WiFi名称与密码: String regex_name="ssid=\"(.*?)\&quo ...

  2. [Java面试一]面试复习大纲.

    一.Java基础部分 (搞定所有技术之后才考虑复习的技术点) 1.数组中的排序问题(笔试或者机试,前者可能性更大) 2.面向对象的理解 3.集合相关的问题,比如hashmap跟hashtable的区别 ...

  3. 【管理心得之三十八】如果“Q”不是高富帅,也吸引不了白富美“A”

    场景再现=========================={美剧片段}一位老人在电话亭中,一次又一次地向公用电话投硬币,但是每一次仅是接通后就自动掉线了.老人无奈之下寻求他人拨打报修电话,但苦等了许 ...

  4. Servlet开发技术,创建,以及Servlet的配置,web.xml的配置

    直接上图,不废话!!! 第一:首先在Eclipse的包资源管理器中,单机鼠标右键,在弹出的快捷键菜单中选择“新建”/Servlet命令,在弹出的对话框中输入新建的Servlet所在的包和类名,然后单击 ...

  5. 每天一个linux命令(28):tar命令

    通过SSH访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar命令就是是必不可少的一个功能强大的工具.linux中最流行的tar是麻雀虽小,五脏俱全,功能强大. tar命令可以为linux ...

  6. java三大循环:for、while、do...while

    1.while和do...while的区别: while 与 do...while之间的区别:如果布尔表达式第一次执行的结果就为false,那么while循环一次也不执行:do...while循环会执 ...

  7. oracle11g AUD$维护

    SYSTEM表空间使用率达到了85%,查出是用来记录审计记录的aud$表占用了很大的空间. 备份后truncate掉AUD$,问题临时解决.记得oracle11.2可以把aud$迁移到普通的表空 间. ...

  8. GridView里做页面的链接

    采用Gridview的OnRowDataBound属性 后台 protected void gvTranslateInfo_RowDataBound(object sender, GridViewRo ...

  9. ZOJ3805Machine(二叉树左右子树变换)

    /* 题意:建立一棵二叉树,左子树和父节点占一个宽度,右子树另外占一个宽度! 使任意左右子树交换顺序,使得整个树的宽度最小! 思路:递归交换左右子树 ! 开始写的代码复杂了,其实左右子树不用真的交换, ...

  10. 炫!一组单元素实现的 CSS 加载进度提示效果

    之前的文章个大家分享过各种类型的加载效果(Loading Effects),这里再给大家奉献一组基于单个元素实现的 CSS 加载动画集合.这些加载效果都是基于一个 DIV 元素实现的,十分强悍. 温馨 ...