webx roadmap

SpringExt

自定义Spring Schema的例子

基于Spring可扩展Schema提供自定义配置支持

使用SpringExt扩展Webx的示例

扩展点和捐献

一个namespace下可以声明多个element。

扩展点:将namespace和接口关联起来。
捐献:将element和实现关联起来。

webx archetype

tutorial1

tutorial11.PNG

mvn archetype:generate -DgroupId=com.alibaba.webx -DartifactId=tutorial1 -Dversion=1.0-SNAPSHOT -Dpackage=com.alibaba.webx.tutorial1 -DarchetypeArtifactId=archetype-webx-quickstart -DarchetypeGroupId=com.alibaba.citrus.sample -DarchetypeVersion=1.8 -DinteractiveMode=false

login-webx3-tutorial

该示例是tutorial1示例中的“5. Form Validation”部分的内容。

login-webx3-tutorial.PNG

mvn archetype:generate -DgroupId=com.alibaba.webx -DartifactId=login-webx3-tutorial -Dversion=1.0-SNAPSHOT -Dpackage=com.alibaba.webx.tutorial -DarchetypeArtifactId=archetype-webx-quickstart -DarchetypeGroupId=com.alibaba.citrus.sample -DinteractiveMode=false

petstore

git clone https://github.com/webx/citrus-sample.git
cd citrus-sample/petstore
mvn clean install
cd web
mvn jetty:run-war

第五章

web应用根目录
就是指的是web项目的根目录。
/WEB-INF/web.xml
上述的/不是相对于操作系统而言,而是针对web项目而言。

charset

每一端都有input chaset 和output charset。这就好比socket通信,每一端都有输入流和输出流。

如何将url转为target

AnalyzeURLValve:取得target,action,actionEvent。
(1)通过request.getServletPath()+request.getPathInfo()获取请求的pathInfo,并通过MappingRuleService将pathInfo转为target。
(2)取得请求中的action参数。通过MappingRuleService得到最后的action。
(3)得到请求中的actionEvent。

对开发者的要求:
(1)配置MappingRuleService的映射规则。即<services:mapping-rules>

如何将target映射到action

PerformActionValve:根据action参数找到具体的action类,然后执行其execute()方法。
ModuleLoaderService.getModule(action).execute()
Module就是一个含execute()方法的接口。

<direct-module-rule>元素表示直接映射module,这是最简单的模块映射规则。
它映射Module的原理是:将URL路径"/"替换成".",除去文件名后缀,将最后一个单词首字母改成大写,以符合模块命名的规则。
比如http://abc.com/helloapp/path/hello.htm

webx根据你访问的URL target “path/hello.htm”,定位到 Module “path.hello.class”

    <services:module-loader>
        <ml-factories:class-modules>
            <search-packages type="$1" packages="com.alibaba.sample.petstore.web.common.module.*" />
        </ml-factories:class-modules>
    </services:module-loader>

webx相关blog

petstore-web的src目录如下:

src
└─main
    ├─java
    │  └─com
    │      └─alibaba
    │          └─sample
    │              └─petstore
    │                  └─web
    │                      ├─common
    │                      │  └─util
    │                      ├─home
    │                      │  └─module
    │                      │      └─screen
    │                      ├─servlet
    │                      ├─store
    │                      │  └─module
    │                      │      ├─action
    │                      │      ├─control
    │                      │      └─screen
    │                      └─user
    │                          └─module
    │                              ├─action
    │                              └─screen
    └─webapp
        ├─common
        │  └─templates
        │      ├─layout
        │      └─screen
        ├─home
        │  ├─css
        │  ├─images
        │  └─templates
        │      ├─control
        │      ├─layout
        │      └─screen
        ├─META-INF
        │  └─autoconf
        ├─store
        │  ├─css
        │  ├─images
        │  └─templates
        │      ├─control
        │      ├─layout
        │      └─screen
        │          └─edit
        ├─user
        │  ├─css
        │  └─templates
        │      ├─control
        │      ├─layout
        │      └─screen
        └─WEB-INF
            ├─common
            │  └─$petstore_upload
            ├─home
            ├─store
            └─user

WEB-INF目录

main下的两个目录分别是java和webapp。

从代码结构来看,整个petstore-web分成了3个模块(子应用),分别是home、user、store等3个模块。另外还有一个公共模块common。

java部分

java部分在com.alibaba.sample.petstore.web下有四个主要的子包common、home、user、store,分别对应4个模块。
然后在每个子包下面才是action、control、screen等module。

com.alibaba.sample.petstore.web.子模块.module.action.LoginAction;
com.alibaba.sample.petstore.web.子模块.module.screen.LoginAction;
com.alibaba.sample.petstore.web.子模块.module.control.LoginAction;

webapp部分

webapp目录下有4个子模块目录和WEB-INF目录。
四个子模块目录分别是common、home、user、store。每个里面都是存放的该模块的css、img、template等资源。

WEB-INF目录下的内容:

  • web.xml
  • 3个子模块目录(每个里面都是form.xml),每个子模块对应一个webx-*.xml
  • 公共子目录common,里面存放了共用的配置文件;以及一个总的webx.xml

每个子模块的webx-*.xml中都有一个装载模块的配置<services:module-loader>,对应着java中的package。

例如webx-home.xml中的配置片段是:<search-packages type="$1" packages="com.alibaba.sample.petstore.web.home.module.*" />
例如webx-user.xml中的配置片段是:<search-packages type="$1" packages="com.alibaba
时间: 2024-12-31 05:49:37

webx roadmap的相关文章

Webx启动流程

1 WebxContextLoaderListener Webx Framework 通过配置在web.xml中的WebxContextLoaderListener来初始化Spring <!-- 装载/WEB-INF/webx.xml, /WEB-INF/webx-*.xml --> <listener> <listener-class><strong>com.alibaba.citrus.webx.context.WebxContextLoaderList

Webx框架:RequestContext详解

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

Webx框架:Spring Schema 和 Spring Ext

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

高屋建瓴 cocos2d-x-3.0架构设计 Cocos2d (v.3.0) rendering pipeline roadmap(原文)

Cocos2d (v.3.0) rendering pipeline roadmap Why (the vision) The way currently Cocos2d does rendering is good but it is beginning to feel somehow antiquate and moreover it doesn't actually leverage modern multi core CPUs so popular nowadays on most mo

Webx框架:依赖注入

Webx的依赖注入和Spring的依赖注入很像,仅仅是有一点点的差别. 注入的时候仅仅能让生命周期长的注入到生命周期短的对象中,比方requestScope对象注入到singleton时就会错误发生.可是对于一些特殊的对象,比方request.session.response它们的生命周期是requestScope,而它们能够注入到随意对象中.这是由于webx对这些对象进行了特殊的处理. 依赖注入有多种方式.能够通过Spring中的Autowired字段进行注入. @Autowired priv

Webx学习(一)

什么是webx Webx3_Guide_Book中是这样介绍的: Webx是一套基于Java Servlet API的通用Web框架. Webx致力于提供一套极具扩展性的机制.来满足Web应用不断变化和发展的需求.而SpringExt正是这样的扩展性的基石.SpringExt扩展了Spring,在Spring的基础上提供了一种扩展功能的新方法. 这也说明.webx是在springExt的基础上建立起来的一套web服务框架. 它封装了servlet规则.细化了普通情况下的filter,通过配置文件

Embarcadero RAD Studio 2016 Product Approach and Roadmap

http://community.embarcadero.com/article/news/16211-embarcadero-rad-studio-2016-product-approach-and-roadmap-2 Embarcadero RAD Studio 2016 Product Approach and Roadmap Written by Marco Cantu, RAD PM. Posted in News As we enter into 2016, the team is

2016年 delphi roadmap

2016年delphi Roadmap 发布,这也是新公司的第一次发布路线图. 虽然稍微晚点( 原来说是1月份发布路线图),至少比过去积极点.喧嚣多年的靴子终于落地. Linux 的支持终于正式公布. http://community.embarcadero.com/article/news/16211-embarcadero-rad-studio-2016-product-approach-and-roadmap-2 整体来说,意料之中. The changes in ownership in

Webx学习之一

什么是webx Webx3_Guide_Book中是这样介绍的: Webx是一套基于Java Servlet API的通用Web框架.Webx致力于提供一套极具扩展性的机制,来满足Web应用不断变化和发展的需求.而SpringExt正是这种扩展性的基石.SpringExt扩展了Spring,在Spring的基础上提供了一种扩展功能的新方法. 这也说明,webx是在springExt的基础上建立起来的一套web服务框架. 它封装了servlet规则,细化了一般情况下的filter,通过配置文件pi