(注:我目前正在基于struts2做一个轻量级的快速开发框架,并且不打算使用所以此文中所述的用命令加参数调用后台逻辑的方式,命令的方式可能更有利于分层和解耦,但对快速开发并不有利。所以本文仅供参考。)
Jacker模块开发主要可分为操作界面和提交数据两部分。
在Jacker中,操作界面仍然沿用Web中传统的URL得到html的方式获取,这样的做法与纯Ajax构建界面不同,但也有其方便性。
1. 通过简短的URL链接,获取丰富的页面(操作界面),是http协议所擅长的;
2. 界面操作权限也可以在服务器端产生页面时进行控制,比如某些链接由于没权限不能显示,某些按钮要disable掉;
3. 由于页面在服务器端产生,在后台能充分利用hibernate延迟加载,只加载页面展示需要的数据;
4. 你仍然可以使用传统的页面开发工具开发所见即所得的html页面模板,比如DreamWeaver;
5. 对于使用MVC框架的开发者,URL获取操作界面正是他们所熟悉的,没有学习台阶;
正是基于很多原因,URL,html这些原始的Web元素在Jacker中得到了保留,同时作为对Html的扩展,页面引入了很多有用的Ajax组件,丰富了数据展示和交互能力,比如:Grid,Tree等;
接着说提交数据,在Jacker中,提交数据与传统的http post完全不同,采用了ajax方式,提交数据并保持当前页面。客户端组织好需要提交的js数据对象后,可使用命令+参数的方式提交给服务器端运行并得到结果js对象。服务器端Java对象和客户端js数据对象的互转由框架实现,所以客户端的调用清晰便捷,实现跨语言调用。
附图:
上图演示了Jacker框架的一次完整的交互:产生一个id为xxx的customer资料维护界面,修改customer数据提交保存。在Jacker框架下,任意复杂的模块都是获取界面+提交数据这两种基本模式的组合。