没有合适的资源?快使用搜索试试~ 我知道了~
首页WEB开发框架选取 经验之谈
资源详情
资源推荐
![](https://csdnimg.cn/release/download_crawler_static/400581/bg1.jpg)
WEB 开发之旅—站在山脚下
作者:T.WOLF 博客:http://hi.baidu.com/fenglinquan 日期:2008-0321
STURTS+SPRING+[HIBERNET|JPA]+DWR+EXTJS
.$$$有需求就有想法,有想法就有动作,有动作最好就有结果$$$.
最近,总觉得该写些什么,但始终不知道要从何写起,索性今天就毫无章法的随便侃
侃,侃侃在 IT 开发中近期的一些感触,所以……
基本上,大家一致认为 IT 界的软件开发是吃青春饭的,从侧面用实际行动验证着身体
是革命本钱的亘古不变谚论,IT 光环下的苦累与现实,非亲身经历者无法体会。
刚步入社会的我一工作就被派去出差了,带头的大哥【简称老大】年龄已过 40,带着
我们兄弟 3 人日夜奋战于重庆电信近 4 个月,每人负责一块,基本上是单打独斗作业方式,
我是负责报表的开发及分析系统的升级改造,所以,累是自然的,但我的累和我们老大的
累与压力相比,倒也算不了什么,年龄使他可能面临 IT 的自然淘汰,房贷仍是他的一块心
病,再加之家庭、社会的其它方方面面的压力,老大的身影给人以莫名的沉重感,使我不
由得自问:IT 开发者,你的出路在哪里?
关于此问题,大家可能会有以下几点考虑:1、转管理;2、转销售;3、转创业;4、
转培训、教育;5、做技术牛人;6、做资深咨询顾问;7… 何去何从,将漫长的摸索与抉择!
而今,出差在海南电信的我,不由得又想到了这个问题,但我今天要说的主题倒不是:
“IT 开发者,你的出路在哪里?”,而是目前对 IT 开发的一些自我认识,很早就有动笔的冲
动,但总是不知从何处说起,今天刚刚为开发局方报表新需求找到一条新的路线,觉得应
该写些什么,随便侃侃…
作为 IT 开发者,我觉得应该将其成长分成三个阶段:1、站在山脚下:完成开发任务;
2、爬向山顶:掌握技术中不变部分;3、站在山顶:做系统架构或分析。
为何这样说呢?以我为例,简单的阐述下: 2007 年 7 月份毕业于汕头大学计算机网络
应用与安全专业,硕士期间开发过门户网站、做过协议测试、入侵检测等项目,毕业了,
为了不荒废我那张系统分析师证书,进入广东普信做软件开发,从 2007 年 8 月份进入公司
到书写本文章止,基本上都是在出差中度过的,出差主要是和 unix、oracle、Microstratege
及 java 打交道,这些都是没有选择的余地。在 java 开发中,更加认识到了技术的庞杂,没
有一条主线或既定目标,终究注定要成为技术的奴隶,当耗尽革命本钱之际也即离开 IT 开
发之时,而不幸的是,这种离开将把我们带入暗狱,没有光明,亦没有希望,为了改变这
种预定将到来的结局,我们不得不提前准备,做技术的主人,随心所欲的让技术为我们服
务,所以,我将我的 IT 发展定位成上面的 3 个阶段,但更严格的说是 4 个阶段,而第 4 个
既定的阶段是转做培训或教育,因为我是带着我所谓的梦想走出校园的,而我的梦想就是
积累工程经验、返归教育事业,尽绵薄之力弥补工科教育与社会需求的脱节,希望能给以
微弱的灯光指引期待进入该行的莘莘学子。
……
WEB 开发之旅—站在山脚下:完成开发任务~~
Web 开发,大家可能最熟悉的开发框架组合是 SSH,这种架构的确不错,低耦合,高
内聚,架构职责清晰,开发及维护工作变得条例化、简单化,我也是采用的这种框架组合
模式,但少有不同,SSH 中的 H 被 J 替代了【Struts+Spring+JPA】。这倒不是我今天所说
的重点,大家知道,ajax 目前是个炙手可热的家伙,暂不论述它的优劣,但我深信,大家
![](https://csdnimg.cn/release/download_crawler_static/400581/bg2.jpg)
一定很期待能在自己的项目中使用 ajax,还有一点,那就是 UI,大家也很清楚,对于 web
开发,其 UI 功能远低于 desktop 模式,所以,我也深信,大家一样期待在自己的项目中能
够有优美的易用的 UI 界面。其实,ajax 技术使得 web 应用更像 desktop 模式了,它已经不
再遵循传统的 requset-response 直等的方式。那么,我们如何才能找到适合或者比较适合自
己的开发框架呢?我一直思索着,今天还没有完美的答案,但也有一定的收获,下面做一
个简述:
一、框架【Struts|JSF+Spring+HIBERNET|JPA】
这是较为常见及流行的开发框架,它的最大好处便是:解藕、结构清晰、职责明确,
编码尤其是变动维护易,减少代码量、提升开发速度等。所以,我们可以选择这样的开发
框架。
关于该框架的具体阐述待续,因为它不是我们今天所关注的重点是,而我们今天关注
的重点是:完成开发任务,为自己选取一劳永逸的开发框架集合; SSH 这样的框架能满足
我们的需求吗?不能,至少我是这样认为的。那么我们还缺少什么呢?漂亮易用的界面 UI
及异步数据存取能力 Ajax。
UI 及 Ajax 均可以借助 javasscript 来完成,但问题是我们具备这样的能力吗?即便是我
们具备了这样的能力,重复制造轮子又有意义吗?我们的目标无外乎是用最短的时间、最
有效途径完成较高质量软件,那么,我们唯一的选择就是借助于第三方资源,杜绝重复制
造轮子…
二、Ajax 与界面 UI【extjs+dwr】
我们所熟悉的 Ajax 及 UI 第三方包应该比较不少,但我们要到底如何抉择呢?我们先
来看看下面的罗列陈述:
☆ YUI (http://developer.yahoo.com/yui/)
Yahoo!用户界面库(Yahoo! User Interface Library, YUI)提供一些在开发 Web 胖客户
端 时常 用到 的一 些 工 具 和 UI 控 件 。 工 具 : 拖 放 (Drag and Drop) 操 作 , 连 接 管 理 器
(XMLHttpRequest),页面特效,浏览器事件(例如鼠标点击和键盘按键)管理。UI 控件:自
动补全(AutoComple)、日历(Calendar),容器(Container)类控 件包括提示(Tooltip) 、面板
(Panel)、对话框(Dialog)等、菜单(Menu)、TabView、TreeView,Logger。YUI 还包括了在
创建简洁,灵活的布局并能够兼容多种浏览器时所需要的 CSS 资源。
☆ EXTJS (ExtJS http://extjs.com/)
ExtJS(yui-ext)是一组扩展自 Yahoo!UI,具有 CS 风格的 Web 用户界面组件。主要
UI 包括:dialog,grid,layout,tabs 等。
☆ GWT-Ext (http://code.google.com/p/gwt-ext/)
Java 语言:GWT-Ext 是一个基于 GWT 和 ExtJs 开发的 Web 界面组件库。组件包括:具
有 排 序 、 分 页 和 过 滤 功 能 的 Grid , 支 持 拖 放 操 作 的 Tree , 能 够 灵 活 配 置 的
ComboBoxe、Tab Panels、Menus&Toolbars、Dialogs、Forms 等等。
☆ GWT (http://code.google.com/webtoolkit/)
Google Web Toolkit (GWT) 是一个 Java 软件开发框架用于开发类似于 Google Maps
和 Gmail 的 AJAX 应用程序。GWT 的设计参考 Java AWT 包设计,类命名规则、接口设计、
事件监听等。你可以用 Java 编程语言开发你的界面,然后用 GWT 编译器将 Java 类转换成适
合浏览器执行的 JavaScript 与 HTML。Eclipse 开发插件 Googlipse。
![](https://csdnimg.cn/release/download_crawler_static/400581/bg3.jpg)
☆ Dojo(http://dojotoolkit.org/)
Dojo 是一个非常强大面向对象,开源的 JavaScript 工具箱。它为开发 Web 胖客户
端程序提供了一套完整的 Widget 和一些特效操作。
☆ Prototype(http://www.prototypejs.org/)
Prototype 是一个 JavaScript 框架,它的目标是使开发动态的 web 应用变得容易。
☆ Prototype UI(http://www.prototype-ui.com/)
Prototype UI 是个基于 Prototype (1.6) and Script.aculo.us (1.8)的 javascript 库。是基
于通用基类的 UI 组 件,这些组件可以很容易的各种 web 应 用。( It's a library of User
Interface components, based on a common fundation classes, which could be easily used by
various web applications.)
☆ jQuery (http://jquery.com/)
jQuery 是一个快速,简练的的 JavaScript 工具箱它能够让你以简单的方式来操作
HTML 元素,处理事件,实现特效并为 Web 页面添加 Ajax 交互。jQuery 设计用于改变你编写
JavaScript 的方式。
☆ jQuery UI (http://ui.jquery.com/)
jQuery UI 是一套基于 jquery 构建具有皮肤更换功能的 UI 控件和鼠标交互组件。用于帮助开发
人员构建具有良 好用户体验的 Web 应用程序。交互组件包 括 drag/dropping、sorting、selecting 和
resizing 等。基于这些核心交互组件构建的 UI 控件有:accordion、date picker、dialog、slider、table
sorter 和 tab 等。
☆ JSON-RPC(http://oss.metaparadigm.com/jsonrpc/)
JSON-RPC-Java 是一个用 Java 来实现动态 JSON-RPC 的框架. 利用它内置的一个轻级量
JSON-RPC JavaScripIt 客户端,可以让你透明地在 JavaScript 中调用 Java 代码。JSON-RPC-Java 可运
行在 Servlet 容器中如 Tomcat 也可以运行在 JBoss 与其它 J2EE 应用服务器中因此可以在一个基于
JavaScript 与 DHTML 的 Web 应 用 程序 中 利用它 来直 接 调用普 通 Java 方 法 与 EJB 方法 。 JSON :
JavaScript Object Notation。
☆ SmartClient (http://www.smartclient.com/technology/basics.jsp)
SmartClient Ajax platform 原本是一个商业产品,现在基于 LGPL 许可发布成为一个开源项目。
SmartClient Ajax 平台包括:一个不需要安装的 DHTML/AJAX 客户端引擎;一套胖客户端 UI 组件和服务;
客户端与服务器数据绑定系统。SmartClient 具有的特性:
1.客户端 Ajax:在 SmartClient 中所有的表示层职责和所有 HTML 生成都在浏览器中完成
HTML 的生成或表示层职责都不需要通过服务器来处理。一旦 SmartClient 加载完成,在浏览器与服
务器之间只有数据在传输。
2.多平台支持:SmartClient 能够与任务服务器平台相集成通过一些跨平台标准比如: REST 和
WSDL web services。SmartClient 还包含一个 Java 集成服务器用于加速与 Java 服务器集成,和对
一些流行 Java 框架的支持如 Java Beans/EJB,Spring,Struts 与 Hibernate。
3. 增 加 升 级 : SmartClient 组 件 能 够 很 容 易 的 嵌 到 现 有 应 用 程 序 中 。 添 加
Grids、forms、trees、dialogs、wizards 和其它 SmartClient 组件都不会使现有架构发生变化。
4.面向对象:SmartClient 提供面向对象的 JavaScript APIs,其所有组件都是通过 XML 或
![](https://csdnimg.cn/release/download_crawler_static/400581/bg4.jpg)
JavaScript 创建。采用标准的面向对象模式使得你可以很容易扩展、定制和创建新的 SmartClient 组
件而且不需要学习底层的 Ajax 技术或作跨浏览器测试与调试。
5.元数据驱动。
6.AJAX MVC(类似于 Struts for AJAX)。
此外通过 Adobe AIR 平台,Firefox extensions,Google Gears 和其它技术,SmartClient 还
支持包括离线应用,提供 SmartClient 应用程序桌面安装版本(不需要改动任务代码),兼容 mobile
端浏览器 Safari,Opera 和 IE 等。
☆ DWR (http://getahead.org/dwr/)
DWR(Direct Web Remoting)是一个 WEB 远程调用框架.利用这个框架可以让 AJAX
开发变得很简单.利用 DWR 可以在客户端利用 JavaScript 直接调用服务端的 Java 方法并返
回值给 JavaScript 就好像直接本地客户端调用一样(DWR 根据 Java 类来动态生成 JavaScrip
代 码 ). 它 的 最 新 版 本 DWR3.0 添 加 许 多 特 性 如 : 支 持 Dom Trees 的 自 动 配 置 , 支 持
Spring(JavaScript 远程调用 spring bean),更好浏览器支持,还支持一个可选的 commons-logging
日记操作.
☆ AJAX Tag (http://ajaxtags.sourceforge.net/)
AJAX Tag 是一组 Jsp 标签,用来简化 AJAX(Asynchronous JavaScript and XML )技术在 JSP 页
面中的使用.它提供了一些常见功能的标签如下拉级联选择,用户在文本框中输入字符自动从指定的数据
中匹配用户输入的字符等。它构建在 prototype Javascript 框架之上。
☆ Struts Ajax Tags (http://ajaxtags.sourceforge.net/)
这 个 AjaxTags 是 在 现 有 的 Struts HTML 标 签 库 上 添 加 对 AJAX (Asynchronous
Javascript+XML)技术的支持。这样就可以为现有的基于 Struts HTML 标签库的应用程序添加 AJAX 功能
而不用破坏现存的代码并且开发者不需要了解 AJAX 是怎样工作的。与此类似的还有 JSF Ajax Tags。
☆ AjaxAnywhere (http://ajaxanywhere.sourceforge.net/)
AjaxAnywhere 被设计成能够把任何一套现存的 JSP 组件转换成 AJAX 感知组件而不需要复杂的
JavaScript 编码.它利用标签把 Web 页面简单地划分成几个区域,然后使用 AjaxAnywhere 来刷新那些需要
被更新地区域。
对于第三方开源选择的原则,个人认为要考虑以下几点:1、开源组织;2、稳定性;
3、可扩充性;4、方便性;5、文档。
在做出选择之前,我们先来用图示的方式大致的整理一下上面提到的各种第三方开源
组件,以便帮助我们分析问题:
![](https://csdnimg.cn/release/download_crawler_static/400581/bg5.jpg)
图 0
从上面的图示,我们不难看出, GWT-EXT 应该是较为合理的选择,因为它架构在
EXTJS 和 GWT 上,兼顾了 Ajax 和 UI 两个方面,由 google 提供开源,适合企业级应用,
而且可纯 java 编程,但其使用模式不同于我们常规开发,用了它,其伸缩性可能有所影响 ,
所 以 , 在 短 时 间 内 选 择 适 合 我 们 完 成 开 发 任 务 的 架 构 , 我 认 为 最 佳 组 合 为
EXTJS+DWR。DWR 可以单纯的使用 Ajax 技术,不必考虑 UI 界面,而且使用起来相当简
单方便,有较多的用户群,多少不必质疑它对企业级开发的胜任能力;EXTJS 可以帮助我
们做出优美的 UI 界面,它对 jQuery、Prototype 及 YUI 做了适配器 Adapter,随时可以将这
3 者加进来,同时 EXTJS 本身也应用了 Ajax 技术,可以很方便的完成 client 与 server 的异
步数据交换及数据解析,EXTJS 可以借助于 MVC 框架比如 Struts 的 Action 或通过 web.xml
配置文件和继承 HttpServlet 类的方式完成 client 与 server 的数据异步传输。这种组合方式,
相对于选择 GWT/GWT-EXT 或 SmartClient 有更大的进退空间,当我们没有太多决策权及
时间仓促的时,毕竟我们的目标重点是保证任务完成而不是最佳架构的选择及论证。
当我们时间充足时,最好多了解 GWT、GWT-EXT、SmartClient 及 Ajax Tag,在实践
中体会它们。
综合考虑以上几点,我倾向选择 extjs 和 dwr。因此,站在山脚下:完成开发任务,对
我目前而言,最终的框架为 Struts+Spring+JPA+Extjs+DWR+Json-lib。
下面是我选择 Extjs 和 DWR 时做过几个小例子,分享于大家,希望对初学者有所帮助。
三、DWR 应用举例
学习开源技术的最好方式是下载官方网站提供的源码包,参考网站上有关应用该技术
的资料,实践它的 demo 程序。
1、 下载 dwr.jar
其下载地址是 http://getahead.org/dwr/,目前的最新版本是 2.0.3,我们可以只下载
dwr-2.0.3-src.zip,因为它里面已经包含了 dwr.jar 和 demo 两个部分。
2、 搭建 dwr 环境
用我们的 IDE(MyEclipse6.0)新建一个 Web Project,并将刚才下载的 dwr.jar 包
剩余27页未读,继续阅读
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![application/msword](https://img-home.csdnimg.cn/images/20210720083327.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![pptx](https://img-home.csdnimg.cn/images/20210720083543.png)
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![doc](https://img-home.csdnimg.cn/images/20210720083327.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![](https://csdnimg.cn/release/wenkucmsfe/public/img/green-success.6a4acb44.png)