Posted on 2007-08-03 09:55
puras 阅读(1204)
评论(2) 编辑 收藏 所属分类:
Struts2.0
现今的开发者有许多不同的WEB框架可用.其中一些是来自开源的团体,一些则来自商业公司,还有一些为了当前WEB发展的需要而正在开发的.现在有超过400个开源框架,虽然这是一个大数目,但还有很多内部使用的框架部署在生产环境中.
所有,有很多的选择,为什么要选择Struts2? 这有一些特征也许会吸引你使用Struts2:
- 基于Action的框架
- 成熟与蓬勃发展和用户社区
- 注释和XML配置选项
- 基于POJO的Action,非常容易测试
- 集成Spring, SiteMesh和Tiles
- 集成OGNL表达式语言
- 基于主题的标签库和Ajax标签
- 多种视图选选择(JSP,Freemarker,Velocity和XSLT)
- 插件扩展和修改框架的特征
所有的为了选择一个框架,选择一个风格框架的决定,都是颇具争议的.我们来看现在Web应用的选择,了解Struts可以应用在哪些方面.
Servlets
Servlets提供了第一个基于Java的WEB开发方法.在HTTP协议下,servlets提供了一种映射URL到调用特定的类的方法.
很快它就被验证,虽然这是一个很大的进步,但在Java代码中生成HTML代码,维护起来简直是个恶梦.每当一个简单的用户接口需要更改,Java程序员则需要修改Servlet代码,重新编译这些源码,并将其发布到应用所在的服务器环境中.
JSP and Scriptlet Development
"维护恶梦"的结果,就是将发展的结果颠倒了.比起将HTML代码放置在Servlet或是Java代码中,将Java代码放HTML代码中(JSP)则会更好一些.每个JSP里包含请求的逻辑处理和展示逻辑.
一个问题解决了,但另一个问题又引进来了.Java代码是在类文件中的,然而,这里却没有方法或类的结构.看看早期的JSP文件,你会发现两个现像:
- 拷贝和粘贴代码:从一个JSP文件中拷贝Java到其他的JSP文件中.从原始的代码中传播出来的缺陷和错误,增加大量的工作量,需要同时对所有的文件做出修改.
- 调用公用的Java格式化对象:公用的格式化或逻辑代码组成一个可复用的对象.然后JSP使用公用对象.从这些中发现了最佳的实践模式--从JSPs中使用Java对象.
做为JSP规范的发展,标签被引进入来,用于复用Java对象.Tag提供一个类似于HTML的写法来访问底层的代码,允许设计者(而非开发者)利用IDEs使用动态标签编辑网布的布局.例如JSP提供的<jsp:useBean.../>和<jsp:getProperty.../>标签.随同提供JSP标签库一起,JSPs提供了一个让开发人员创建自己的标签库的方法.
Action-Based Frameworks
基于Action的框架,是在结合了Servlets和JSPs两者的概念之上.想法是拆分用户发送的请求的页面的请求处理和显示逻辑,让每个部分都做它做的最好的一块.这个实现使用一个来自Smalltalk的模式,MVC模式,或是更多常说的前端控制器,或是Sun说法中的Model2.
在这个模式中,Servlet是一个控制器,提供一个对所有客户端页面请求的集中的控制点.它映射请求的URL到工作单元中的一个action.这个action的工作则将对给定的URL执行特定的方法, 访问HTTPsession, HTTP请求和参数,调用商业服务,并将响应映射到一个Model中,一般使用POJO.最后,action返回一个结果,映射(通过配置文件)到JSP来泻染视图.
Struts2是一个基于action的MVC的WEB框架.
Component-Based Frameworks
由于WEB应用变得越来越复杂,人们认识到一个页面不再是将逻辑分离,WEB应用了多种页面形式,链接内容更新和其他许多自义定的窗口小部件--所有的都需要处理逻辑以实现他们的任务.
为了解决这些复杂性,基于组件的框架变得开始受欢迎.它们提供了一种封闭的由用户界面组件和类的组件,并且是由事件驱动的,而且比基于action的框架更加面向对象.一个组件可以是一个HTML输入框,一个HTML的窗体或是提供的自定义窗口小部件.事件,像窗体的提交或链接这种,映射到描述组件的类的方法,或到特定的监听类.另一个好处是基于组件的框架,允许你方便的复用你的组件在多个WEB应用中.基于组件的框架有JSF,Wicket和Tapestry等.
The Great Equalizer – Ajax
在2005年初,一种新的魔力出现在WEB开发中.Jesse James Garrett杜撰的,AJAX代表"Asynchronous JavaScript and XML".相对来说,技术并不新鲜.事实上,主要的WEB浏览组件已经创建了这个异步调用--XMLHttpRequest对象, 早在6年前就已经可用了.
但是有什么新应用使用了这项技术呢.Google Maps是最早充分利用这项技术的应用.网页活跃了起来--您能与控制和装饰物交互.使用鼠标你可以在屏幕内滚动地图;当输入一个地址时,信息将在地图上被物化出来;最后,the culmination being route planning which orchestrated all these features into a useable web application.并且,所有这些,都没有发生整个页面的刷新.
用户界面使用Ajax功能允许WEB浏览器对服务器的请求使用更小的信息量,并且只有它被需要的时候.请求结果被服务器格式化或操作,并直接返回给页面显示,使用WEB浏览器将变化传递给用户.只有页面的部分被更新,而不是整个页面,使用户觉得这个WEB应用可以更快的响应他们的操作.
从UI来的请求,类似事件--它们非常的分散,为一个单独的组件或方法传递信息.不再需要一个action为整个页面检索数据,它们 更加简洁,而且因此更方便在各个应用中复用.实际上,一个Ajax用户界面调用基于action的框架允许action框架的行为与基于组件的框架相似.事实上,这种技术的组合提供了更加松耦合和可复用性更加的系统.同样的actions可以为Ajax组件提供JSON,XML或HTML的视图片段,和其他actions结合提供非Ajax用户界面的HTML视图相似.
上一章:Starting Struts2--绪论
下一章:Starting Struts2--Core Components(1)