框架模块,开发框架
前言
有很多标准的MVC开源框架。 (Struts、SpringMVC、Webx )对于生活在开源世界的循环农户来说,SpringMVC、Struts是接触较多、最亲近的框架。
知己知彼
例如,在SpringMVC配置中,主要关注以下内容:
1 .在1.web.xml文件中请求分发程序(dispatcher servlet )。 下图:
阻止以do结尾的HTTP请求。
2 .以jsp为例,如视图控制器、视图解析器、框架生成器、jsp等。 下图:
将所有视图配置为在/WEB-INF/view中查找。
3 .拦截。 下图:
4 .适配器。 下图:
配置url请求和处理函数之间的映射关系。
5 .请求路径映射。 下图:
在HandlerAdapter中实际调用处理函数。
经过三两次部署,工程成功进入。
注:为什么以SpringMVC为例,这里主要有两个原因
SpringMVC与稍后讨论的Webx一样基于Spring容器。 SpringMVC比较简单Webx框架
主页: http://openwebx.org/
框架说明书: http://openwebx.org/docs/webx3_ guide _ book.html
框架搭建
运行环境: windows、maven
执行步骤:
1 .创建一个新目录,如d : workspace。 请注意,它不能在驱动器号目录中执行。
2 .执行以下命令:
mvn archetype : generate-d groupid=com.Alibaba.webx-dartifactid=mywebx-d version=1.0-snapshot-dpackage=com upid=com.Alibaba.citrus.sample-darchetypeversion=1.0-dinteraction这个项目其实是Maven根据webx中央库原型生成的框架
框架结构
Webx解决了单个项目中包含的不同的体系结构配置。 例如,根据业务需要在项目中区分同一会员用户的不同权限、业务功能、页面展示时,可以从业务的角度划分项目并构成webx-account.xml、webx-gateway.xml等便于业务的并行开发。
)业务功能模块的具体实现;
)2)业务功能模块页面展示;
)3)对业务功能模块的后台简单检查;
(4)针对该业务功能的总配置;
WEB-INF文件夹下各个配置文件说明
logback.xml:日志配置;web.xml:WEB工程初始化配置信息;webx.xml:webx通用配置,webx容器初始化的Bean能够让所有子业务容器依赖。webx-app1.xml:webx子业务配置,子业务配置能够创建spring容器,但子业务容器之间是不能互相注入的。
具体内容可以查看框架说明书《3.1. Webx的初始化》
WEB-INF/common文件夹下各个配置文件说明
pipeline.xml:拦截器配置文件,相当于SpringMVC(Struts)中的Interceptor。pipeline-exception.xml:异常拦截配置文件。resources.xml:资源文件加载配置,负责资源的重定向、重命名等。uris.xml:外部地址url调用配置文件。webx-component-and-root.xml:配置模板渲染引擎、映射规则等。webx-component.xml:定义模板页面能够直接使用的工具类。
从这些配置可以看出,webx与我们接触的SpringMVC、Struts类似,只不过前者控制更加细粒度化,而后者我们更多的是使用开源的封装,所以配置量较少。
代码结构及编写
对于开发人员来说,最关心的莫过于上手去用这个框架。从工程接收请求到服务器响应并返回信息这整个过程,webx有自己的规则,与我们所接触的开源框架有所区别。如下图:
根据Http请求中所带参数中是否有action,Webx在代码层执行的内容也有所区别。
不带action参数请求
webx执行步骤如下:
步骤一、若控制层screen中存在Login.java代码,则执行Login.java代码。
步骤二、执行模板层layout中login.vm(若layout中没有对应名字的布局模板,则会调用默认模板default.vm)。
步骤三、执行模板层screen中的login.vm。
带action参数请求
webx执行步骤如下:
步骤一、执行控制层action中LoginController.java代码,指定类必须存在,否则会出现404异常。
步骤二、若控制层screen中存在Login.java代码,则执行Login.java代码。
步骤三、执行模板层layout中login.vm(若layout中没有对应名字的布局模板,则会调用默认模板default.vm)。
步骤四、执行模板层screen中的login.vm。
控制层action、screen层编写
Webx规定了action、screen层的默认入口函数为execute,即当类名与路径能够匹配的时候(路径与类名可以以驼峰命名方式,也可以中间以下划线“_”来连接,只有首字母能够忽略大小写),webx会执行类名下execute()方法。示例:
工程中常用的方法
控制层action:处理用户操作动作,比如登录、提交数据等。
控制层screen:处理页面展示所需内容。
在老版本的webx中(version小于webx3.0.9)screen层一个Java类只能处理一个页面。而action层可以处理多个不同业务动作。
action层代码有所变化,具体示例如下:
(1)提交时必须指明访问的具体方法,且需要有“event_submit_”前缀。
(2)指定具体的action时,需要注意包路径。
拦截器
Webx中针对拦截器的配置主要集中在pipeline.xml中。在日常业务开发中免不了要进行登录、权限等验证,而这部分业务作为拦截器再适合不过了。详细配置方式可以查看框架说明书《6.3.3. Pipeline的使用》。