Webx-webx turbine

Webx框架采用页面驱动和约定胜于配置的设计理念,简化了Web应用开发过程。框架分为三层,支持页面渲染、布局定制等功能。本文介绍了其核心组件及处理流程。

整个webx框架分成三个层次,webx turbine建立在webx framework的基础上,实现页面渲染、布局、数据验证、数据提交等一系列工作。

设计理念

 

  • 页面驱动
  • 约定胜于配置

页面驱动

创建一个web应用,一般会经历三个阶段:产品设计、用户界面设计、功能实现。分别由产品设计师、用户界面设计师和程序员协作完成。

页面驱动的意思是,在程序员介入以前,让界面设计师可以直接创建模板,并展示模板的效果。在webx turbine中,界面设计师可以通过pull tools工具来实现页面跳转、简单的表单验证、字符串操作等,这是因为pull tool服务预先准备了很多模板中可用的工具。

 

约定胜于配置

规则是预先定义的,工程师只需要按着规则来做事,就不需要额外的“配置”。

只需要将模板放在指定的目录、按照预定的方式命名module(也就是screen、action、control等),就不需要额外的配置。

 

 

  • screen代表页面的主体。
  • layout代表页面的布局。
  • control代表嵌在screen和layout中的页面片段。

处理页面的基本流程

webx turbine的处理流程被定义在pipeline中,下面是一个推荐的pipline配置

<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>


webx framework的处理流程,从webxframeworkfilter接收请求,并且一路顺利到达pipeline,然后pipeline开始依次执行它的valves。

1.<analyzeURL>-分析URL

分析URL的目的是取得target,有一个可选的参数homepage,在用户访问的URL中没有提供path信息时,会被使用。

2.<choose>-多重分支

target-extension-condition extension="null, vm, jsp"的意思是target的后缀不存在(null)或为“jsp”或为“vm”。

3.<performAction>-执行action

和其它框架中的action概念不同,在webx turbine中,action是用来处理用户提交的表单的。

4.<performTemplateScreen>-查找并执行screen

假设target为xxx/yyy/zzz,那么webx turbine会依次查找下面的screen模块:

  • screen.xxx.yyy.Zzz
  • screen.xxx.yyy.Default
  • screen.xxx.Default
  • screen.Default

Screen类的功能,通常是读取数据库,然后把模板所需要的对象放到context中。

5.<renderTemplate>-渲染模板

这里会用到两个规则:target映射成screen template,以及target映射成layout template。

假设target为xxx/yyy/zzz,那么webx turbine会查找下面的screen模板:/templates/screen/xxx/yyy/zzz。如果未找到,就会报404 not found错误,找到screen模板以后,webx turbine还会试着查找下面的layout模板:

  • /template/layout/xxx/yyy/zzz
  • /template/layout/xxx/yyy/default
  • /template/layout/xxx/default
  • /template/layout/default

layout模板如果找不到,就直接渲染screen模板,如果存在,则把渲染screen模板后的结果,嵌入到layout模板中。layout模板和screnn模板中,都可以调用control,每个页面只有一个screen,却可以有任意多个controls。

6.<breadUnlessTargetRedirected>-内部重定向 

在screen和action中,可以进行“内部重定向”,内部重定向实质上就是由<breakUnlessTargetRedirected>实施的,如果没有重定向标记,就退出;否则循环到<loop>标签。

和外部重定向不同,外部重定向是向浏览器返回一个302或303 response,其中包含Location header,浏览器看到这样的response以后,就会发出第二个请求。而内部重
定向发生在pipeline内部,浏览器并不了解内部重定向。
 

依赖注入

 

1.Spring原生注入手段

webx既然建立在spring基础上,当然支持spring原有的依赖流入。但需要注意,你只能注入相同scope或较大的scope的bean。

2.参数注入

有一些对象,是无法通过Spring的bean来注入,但webx turbine提供了一个可扩展的机制(DataResolver service)注入。

最后欢迎大家访问我的个人网站:1024s

 

采用PyQt5框架与Python编程语言构建图书信息管理平台 本项目基于Python编程环境,结合PyQt5图形界面开发库,设计实现了一套完整的图书信息管理解决方案。该系统主要面向图书馆、书店等机构的日常运营需求,通过模块化设计实现了图书信息的标准化管理流程。 系统架构采用典型的三层设计模式,包含数据存储层、业务逻辑层和用户界面层。数据持久化方案支持SQLite轻量级数据库与MySQL企业级数据库的双重配置选项,通过统一的数据库操作接口实现数据存取隔离。在数据建模方面,设计了包含图书基本信息、读者档案、借阅记录等核心数据实体,各实体间通过主外键约束建立关联关系。 核心功能模块包含六大子系统: 1. 图书编目管理:支持国际标准书号、中国图书馆分类法等专业元数据的规范化著录,提供批量导入与单条录入两种数据采集方式 2. 库存动态监控:实时追踪在架数量、借出状态、预约队列等流通指标,设置库存预警阈值自动提醒补货 3. 读者服务管理:建立完整的读者信用评价体系,记录借阅历史与违规行为,实施差异化借阅权限管理 4. 流通业务处理:涵盖借书登记、归还处理、续借申请、逾期计算等标准业务流程,支持射频识别技术设备集成 5. 统计报表生成:按日/月/年周期自动生成流通统计、热门图书排行、读者活跃度等多维度分析图表 6. 系统维护配置:提供用户权限分级管理、数据备份恢复、操作日志审计等管理功能 在技术实现层面,界面设计遵循Material Design设计规范,采用QSS样式表实现视觉定制化。通过信号槽机制实现前后端数据双向绑定,运用多线程处理技术保障界面响应流畅度。数据验证机制包含前端格式校验与后端业务规则双重保障,关键操作均设有二次确认流程。 该系统适用于中小型图书管理场景,通过可扩展的插件架构支持功能模块的灵活组合。开发过程中特别注重代码的可维护性,采用面向对象编程范式实现高内聚低耦合的组件设计,为后续功能迭代奠定技术基础。 资源来源于网络分享,仅用于学习交流使用,请勿用于商业,如有侵权请联系我删除!
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值