Vaadin Web应用开发教程(3):Vaadin应用程序框架介绍
来源:互联网 发布:智能语音软件 编辑:程序博客网 时间:2024/05/02 05:02
Vaadin 应用程序框架为一服务器端技术,允许开发人员采用和开发桌面应用类似的方法开发Web应用。尽管Vaadin 底层采用了HTML,JavaScript,AJAX等Web技术,Vaadin应用程序框架很好的隐藏了这些细节,开发人员一般无需了解上述Web技术来开发Vaadin应用。
下图为Vaadin 总体结构图:
Vaadin 包含了一组Web 应用开发的API,大量的UI 组件,多种内置主题,以及数据绑定允许将数据源直接绑定到UI组件。
一个Vaadin应用实际为运行在Java Web服务器上的Serverlet,Vaadin的Terminal Adapter接受来自客户端浏览器发来的请求并解释用户事件(Event),Event 由UI组件发送给应用,应用通过Listener来响应用户事件。这和桌面应用非常类似。 如果应用程序需要修改UI显示,这是通过Terminal Adapter向浏览器发回响应(Response)来实现的。
所以Vaadin应用都由com.vaadin.Application
派生。应用创建用户界面,响应用户事件等。
Vaadin应用程序框架的几个主要组成部分如下:
用户界面组件( User Interface Components)
包括界面布局(Layout),UI控件(如Button,Link,Lable等),和Swing提供的UI组件类似。Vaadin 的UI 组件由两部分组成:Client-Side 和 Server-Side。每个客户端部分对应一个服务器部分。他们之间通信通过Terminal Adapter来完成。
客户端引擎(Client-side Engine)
Vaadin的客户端引擎使用GWT(Google Web Toolkit)来渲染显示UI组件,它通过Terminal Aapater与服务器端UI组件部分通信。UI 变化使用UIDL(User Interface Definition Language)语言来描述。UIDL基于JSON表述。
终端适配器 (Terminal Adapter)
Vaadin 的UI组件不直接显示在网页上,而是通过终端适配器。有了这个额外的抽象层使得Vaadin应用可以运行于大部分的浏览器上。最新的Vaadin应用使用GWT来显示UI控件。UI组件向Terminal Adapter报告界面变化,当用户触发某个事件(比如点击按钮),这个事件由Client-Side Engine以AJAX请求的方法报告给服务器端的Terminal Adapter。服务端处理事件后再通过Terminal Adapter 以Response的方式返回给Client-Side Engine,从而进一步修改UI显示。
显示主题(Theme)
Vaadin将UI显示的表述(Presentation)和逻辑(Logic)分开. 其中UI逻辑由对应的Java代码处理。而采用主题通过CSS来定义UI显示。Vaadin内置多种显示主题,开发人员也可自定义主题。
用户界面定义语言(UIDL)
Terminal Adapter使用UIDL来描述UI控件及其变化。UIDL 本身通过JSON来描述。所有的UI变化,如Check 按钮选择与否的状态都是通过UIDL来描述的。
事件(Events)
用户交互触发事件,如鼠标按键,事件首先由Client-Side Engine处理,然后以HTTP请求的方式发送多到服务器,Terminal Adapter, 服务器端UI组件部分等。
数据模型(Data Model)
Vaadin 定义了数据模型,使用这种数据模型,UI组件可以绑定到数据源,比如变量,数组,数据库的表。
- Vaadin Web应用开发教程(3):Vaadin应用程序框架介绍
- Vaadin Web应用开发教程(1):概述
- Vaadin Web应用开发教程: 总结
- Vaadin Web应用开发教程(5):Vaadin Web应用的基本组成部分
- Vaadin Web应用开发教程(4):开始编写Web应用
- Vaadin Web应用开发教程(2):安装开发环境
- Vaadin Web应用开发教程(6):使用资源
- Vaadin Web应用开发教程(7):UI组件概述
- Vaadin Web应用开发教程(8):UI组件-Label
- Vaadin Web应用开发教程(9):UI组件-Link
- Vaadin Web应用开发教程(10):UI组件-TextField
- Vaadin Web应用开发教程(11):UI组件-TextArea
- Vaadin Web应用开发教程(12):UI组件-PasswordField
- Vaadin Web应用开发教程(13):UI组件-RichTextArea
- Vaadin Web应用开发教程(14):UI组件-DateField
- Vaadin Web应用开发教程(15):UI组件-Button
- Vaadin Web应用开发教程(16):UI组件-Checkbox
- Vaadin Web应用开发教程(17):UI组件-Select 组件
- 内部排序算法概述
- PowerDesigner 技巧小结
- 如何通过sql日志,查看以前执行过的sql语句
- 一次向svn中增加所有新增文件 svn add all new files
- 问题小结(18)-UTC时间及时区获取
- Vaadin Web应用开发教程(3):Vaadin应用程序框架介绍
- struts和servlet上传文件用法
- Error[Li005] no definition for "__program_start"
- 主板驱动是干什么的?
- 众所周知红枣就是治疗男性早泄和勃起不坚的药物之一
- Oracle性能调优
- UIview需要知道的一些事情:setNeedsDisplay、setNeedsLayout
- 如何开发圆角输入框
- 嵌入式linux下jffs2文件系统的实现