WebX框架使用说明

article/2025/9/29 7:49:52

前言 

标准MVC开源框架有很多(Struts、SpringMVC、Webx),对于生活在开源世界里面的码农来说SpringMVC、Struts是接触比较多,也是最熟悉的框架。

 

知己知彼

以配置SpringMVC为例,我们常常关注的点主要有以下几个方面:

1.web.xml文件里面请求分配器的配置(DispatcherServlet)。如下图:

拦截以do结尾的HTTP请求。

 

2.视图控制器(ViewResolver),velocity、freemarker、jsp等,以jsp为例。如下图:

配置了所有视图都到/WEB-INF/view里面去找。

 

3.拦截器(Interceptor)。如下图:

 

4.适配器(Handleradapter)。如下图:

配置url请求和处理函数间的mapping关系。

 

5.请求路径映射(HandlerMapping)。如下图:

通过HandlerAdapter来实际调用处理函数。

 

三两下配置就能够起工程成功访问了。

注:为什么以SpringMVC为例,这里主要有两个方面的原因

  • SpringMVC与后面我们要说到的Webx一样都是基于Spring容器。
  • SpringMVC比较简单

Webx框架

主页:http://openwebx.org/

框架说明书:http://openwebx.org/docs/Webx3_Guide_Book.html

 

框架搭建

执行环境:windows、maven

执行步骤:

1.新建一个目录,例如:D:\workspace。注意在盘符目录下是无法执行成功的。

2.执行如下命令:

Java代码   收藏代码
  1. mvn archetype:generate -DgroupId=com.alibaba.webx -DartifactId=mywebx -Dversion=1.0-SNAPSHOT -Dpackage=com.alibaba.webx.mywebx -DarchetypeArtifactId=archetype-webx-quickstart -DarchetypeGroupId=com.alibaba.citrus.sample -DarchetypeVersion=1.0 -DinteractiveMode=false  

命令执行完后,你会看见一个新目录:mywebx。这个项目其实是Maven从webx在中央库的原型生成的一个骨架,原型是archetype-webx-quickstart。

 

框架结构

Webx解决了单工程中包含不同架构配置,例如:根据业务需要在工程中区分同一会员用户不同权限、业务功能、页面展示时,可以通过业务角度切分工程并配置webx-account.xml、webx-gateway.xml等。方便业务并行开发。

(1)业务功能模块具体实现;

(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的使用》。


http://chatgpt.dhexx.cn/article/Xn8k86wo.shtml

相关文章

webx学习总结

webx学习总结 一 Webx的概括 WEBX是阿里巴巴的部框架,“就是把页面与Service之间的一些Servlet等公共的东西抽象出,提供相的服务以提高发效率(《接口之Webx介》—何晓峰 )”,可以看出,webx和统的servlet-ac…

Webx MVC分析

Webx框架&#xff1a;http://openwebx.org/ petstore:webx3/webx-sample/petstore/tags/3.0/petstore 编译之后&#xff1a;mvn jetty:run即可, 访问&#xff1a; http://localhost:8081/ Webx MVC(以webx3为基础) 1、webx3的入口点 <filter> <filter-name>…

Webx MVC

首先在Webx中&#xff0c;使用WebxContextLoaderListener替代Spring的ContextLoaderListener&#xff1a; <listener><listener-class>com.alibaba.citrus.webx.context.WebxContextLoaderListener</listener-class></listener><filter><filt…

Webx学习

六月中就要去阿里巴巴实习了,部门使用的web框架是Webx,喜大普奔的发现Webx是开源的,所以认真学习一下。主要参考指导手册 Webx总体介绍 设计理念 这里有许多框架设计的真知灼见! 一个框架的好坏,往往并不是由他所实现的具体功能好坏所决定的,而是由其所使用的基础框架…

webx mysql_idea使用Maven启动maven项目、 webx框架项目

一、打开 二、点击号选择maven 三、 (1)、Working directory : 选择项目路径 (2)、Command line: clean jetty:run-war -Djetty.port8086 -Dautoconfig.charsetUTF-8 -Dmaven.test.skip (3)、VM Options: -server -XX:PermSize256M -XX:MaxPermSize512M (4)、点击Environment V…

webx mysql_Webx项目的获取与验证

在JavaWeb环境配置后就可进行Webx实例项目的获取与研读了。 1.创建一个初始的Demo工程。 1)下载 Webx Maven 项目的目录结构Artifact插件。 2) 创建WebxDemo项目 打开命令行工具(Windows cmd或Unix/Linux bash)&#xff0c;输入如下命令&#xff1a; mvn archetype:generate -D…

Webx框架

Webx是一个框架&#xff0c;它可用来做下面的事情&#xff1a; 创建一个全功能的Web应用 Webx提供了创建一个Web应用所需要的所有必要功能. 创建一个新的Web框架 Webx允许你定制、甚至重写大部分的Webx框架逻辑&#xff0c;从而实现全新的功能&#xff0c;或者和其它应用框…

Webx简介(转)

经常会到博客来看看大家的一些文章&#xff0c;都写的相当精彩&#xff0c;有水平&#xff0c;感觉大家好像都写了&#xff0c;自己没什么写的&#xff0c;后来跟师傅婉佩沟通&#xff0c;才了解到这样想是错的&#xff0c;每个人针对每个东西可能想法观点都不同&#xff0c;写…

WebX入门指南

[说明] 本文围绕WebX的Web框架展开&#xff0c;试图将整个开发中使用的软件栈或者说生态系统串联起来。本文中不讲解原理性的东西&#xff0c;只是讲解各种场景下如何使用WebX相关的技术。入门指南中涉及到的实践指南和原理指南&#xff0c;不会展开&#xff0c;在后续博文中&a…

WebX框架解析及使用教程

WebX框架是阿里巴巴集团开发的&#xff0c;它建立在SpringEx的基础上&#xff0c;具有超强的扩展能力。 一、Webx的层次结构&#xff08;从里到外&#xff09; &#xff08;1&#xff09;SpringExt&#xff1a;基于Spring&#xff0c;提供扩展组件的能力 &#xff08;2&#xf…

VSCode中Emmet使用

文章目录 HTML部分1. 添加类&#xff0c;id&#xff0c;文本和属性2. 嵌套和分组3. 隐式标签4. 定义多个元素* 和 编号$5. 添加虚拟文字6. 其它 CSS部分1. 属性和属性值的缩写2. 属性值的单位其它 HTML部分 1. 添加类&#xff0c;id&#xff0c;文本和属性 div.box#box > …

linux vim emmet,emmet-vim

最近啊&#xff0c;我投奔了网页的开发&#xff0c;看了一本《head first HTML and CSS》的书&#xff0c;感觉非常不错&#xff0c;然后又配置了一些vim里面用到的插件&#xff0c;现在我把学习到的东西记录下来&#xff01; 首先&#xff0c;我不会在这里写emmet 的具体操作方…

Emmet 语法

Emmet语法前身是Zen coding&#xff0c;来提高html和css的编写速度&#xff0c;vscode内部已经集成该语法了 1、快速生成html结构语法 生成标签&#xff1a; 直接输入标签名&#xff0c;再按TAB键&#xff0c;such as 你打个 div 再按tab&#xff0c;就会直接生成 (这里打不出…

emmet写法

1.写一个递增的img路径 img[srcimage/com/$$.png]*10 效果

6.Emmet 语法与快速格式化代码

Emmet语法可以让我们在写网页的时候速度更快&#xff0c;我当前写网页的工具是pycharm&#xff0c;在pycharm中使用Emmet&#xff0c;我们需要点击File,然后点击Setting 搜索emmet&#xff0c;保证这里是勾选状态 安装后如果不进行其他设置&#xff0c;emmet自动被勾选 目录 …

Emmet语法总结

1 Emmet简介 Emmet是一个Web开发工具&#xff0c;用于加快HTML和CSS代码的编写速度。使用Emmet能够通过简短的表达式生成HTML或CSS代码片段。另外&#xff0c;截至2022年&#xff0c;主流的编辑器工具如Visual Studio Code、WebStorm都已经集成了Emmet工具&#xff0c;无需手动…

Linux 配置全面讲解(安装JDK、Mysql、Nginx)

1 Linux概述 1.1 Linux介绍 Linux是一套免费使用和自由传播的类Unix操作系统&#xff0c;是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思…

【JAVA秒会技术之ConcurrentHashMap】JDK1.7与JDK1.8源码区别

前言 以前写过介绍HashMap的文章&#xff0c;文中提到过HashMap在put的时候&#xff0c;插入的元素超过了容量&#xff08;由负载因子决定&#xff09;的范围就会触发扩容操作&#xff0c;就是rehash&#xff0c;这个会重新将原数组的内容重新hash到新的扩容数组中&#xff0c;…

安装笔记--eclipse+jdk+neo4j安装与配置

1.eclipse安装2.JDK安装3.环境变量配置4.在eclipse中创建与导入项目4-1 eclipse导入项目 5.neo4j配置 1.eclipse安装 第一步&#xff1a;下载eclipse&#xff0c;并安装。 下载链接: http://www.eclipse.org/downloads/. 点击 Download Packages; 如图&#xff1a;根据自己的…

JDK7与JDK8中HashMap的实现

JDK7中的HashMap HashMap底层维护一个数组&#xff0c;数组中的每一项都是一个Entry transient Entry<K,V>[] table;我们向 HashMap 中所放置的对象实际上是存储在该数组当中&#xff1b; 而Map中的key&#xff0c;value则以Entry的形式存放在数组中 static class En…