`
龙塘湾
  • 浏览: 136117 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
文章分类
社区版块
存档分类
最新评论

Web 应用的发展过程

阅读更多
Web世界中,Struts2身处何方

今天,摆在开发人员面前的是众多的Web开发框架。它们有些来自于开源社区,有些来自于商业公司,还有些是由某些团队内部开发的,以满足当前Web开发所需。目前大约一共有 超过 40 个开源框架,这个数目看上去挺大,但也许还有同样多(如果不是大大多于这个数量的话)的内部构建的框架部署在产品环境中。 既然我们有这么多选择,那为什么要选择 Struts2 呢?下面列出的这些特性,可能会促使你把 Struts2作为你的选择:

ƒ  基于 Action的框架
ƒ  拥有由积极活跃的开发人员与用户组成的成熟社区
ƒ  Annotation和 XML配置选项
ƒ  基于 POJO并易于测试的 Action
ƒ  与 Spring,SiteMesh 和 Tiles的集成
ƒ  与 OGNL表达式语言的集成
ƒ  基于主题的标签库与 Ajax标签
ƒ  多种视图选项 (JSP,Freemarker,Velocity和 XSLT)
ƒ  使用插件来扩展或修改框架特性。

在选择一个框架的时候,框架风格的选择是最具有争议性的。让我们先来了解一下 Web 应用的发展过程,然后再来看看我们是怎样走到今天的,以及在现在的 Web 开发场景中Struts2 到底占据了什么位置。

Servlets

Servlets 是 Java 在 Web 应用中的开创性的尝试。在遵循 HTTP协议的前提下,Servlets 可以将 URL 映射到一个特定的类上,而该类中的方法将会被调用。 人们马上就意识到,虽然这是一次大踏步式的前进,但是这种在 Java 代码中生成 HTML 代码的方式,对项目维护而言简直就是一场噩梦。每次当用户界面发生了变化,Java 开发人员就需要更改Servlet代码,重新编译,然后把应用重新部署到服务器上。

SP和Scriptlet开发

这种“维护噩梦”的后果,又导致开发风格的正好颠倒。现在人们不是把 HTML 代码放在 Servlet 或者 Java 代码中,而是把 Java代码(作为 script-lets)放在 HTML 代码中——这就是 Java Server Pages (JSP)。每一个 JSP都同时负责处理请求和页面表现。

一个问题得到了解决,而另一个问题却又出现了。在 JSP 中,Java 代码的使用方式和在类中一样,但这里却没有方法和类的结构。在早期的每一个 JSP文件中,都可以找到以下两种情况之一:  剪切和粘贴的代码 —— Java 代码从一个 JSP 中复制到第二个,第三个,等等。这种情况会导致在原始代码中存在的缺陷或者错误传播开来,并且大大增加了工作量,因此必须要对此做出改变。  调用通用的 Java 格式化对象——通用的格式化代码或者是逻辑代码被组织到一个可重用的对象中,然后每一个 JSP都会使用这个通用的对象。 基于这些情况,一种最佳实践,或者可以称之为一种模式,就应时而生了——在 JSP中使用 Java对象。 随着 JSP 规范的进一步完善,标签开始被引入进来对可重用的Java 对象进行封装。标签提供了用以访问底层代码的表层代码,它与 HTML 很相像,设计人员(而不是开发人员)和 IDE 可以通过它与动态内容交互,组装出页面布局。像<jsp:useBean.. />和<jsp:getProperty.. />就是 JSP 所提供的标签。JSP 在提供了一系列标签库的同时,还可以支持开发人员创建自定义的标签库。


基于Action的框架

基于 Action的框架把 Servlet和 JSP的概念合并到了一起。它的想法是把对当前用户所见的页面请求的处理动作,分拆成处理逻辑和表现逻辑,让它们各司其职。这种实现方式使用了源自于Smalltalk 的一个模式,名为模型-视图-控制器——最近的叫法是前端控制器,而 Sun则给它起名为 Model 2。  在这个模式中,Servlet 是控制器,集中处理所有的客户端页面
请求。它把所请求的 URL与被称为 Action的工作单元映射到一起。Action 的工作就是通过访问 HTTP 会话、HTTP 请求和表单参数等调用业务逻辑,最后把响应映射到以 POJO(plain old java object)形式存在的模型上,来完成特定的功能。最后,Action 返回的结果会通过配置文件映射到 JSP页面上,JSP会渲染视图并显示给用户。

Struts2是一个基于 Action的 MVC Web框架。


基于组件的框架

当 Web 应用变得更加复杂的时候,人们便意识到一个页面已经不再是一个独立的逻辑了——一个页面上会存在多个表单,有内容更新的链接,还有其他很多自定义的 Widget——而这些都需要进行逻辑处理来完成各自的任务。 出于解决这种复杂度的需要,基于组件的框架开始流行起来。它们在用户界面组件和表示这些组件的类之间提供了一层紧密的连接,它们是事件驱动型的,并且比起基于 Action 的框架而言,更具有面向对象的特征。一个组件可以是一个 HTML输入框,一个 HTML表单,框架所提供的或是开发人员创建的 Widget。像提交表单或者是点击链接这样的事件,都与代表组件的类的方法或者是特定的监听类,有着一对一的映射关系。基于组件的框架还有一个好处,那就是你可以在多个 Web 应用之间重用组件。JSF,Wicket 和 Tapestry等都是基于组件的框架。

伟大的均衡器——Ajax

在 2005年初,Web应用又增异彩。按照 Jesse James Garrett的说法, Ajax的全称是 “Asynchronous JavaScript and XML”。 相对说来,这些技术没有一样是新的。实际上,早在 6年以前(从 Internet Explorer 5开始),可进行异步调用的主要 Web浏览器组件——XMLHttpRequest对象就已经提供了支持。 

真正推陈出新的是这些技术的应用。Google地图第一个完全利用了这项技术所带来的好处在 Google地图中,网页是活动的,你可以通过各种窗体组件与它进行交互。你可以用鼠标来拖动屏幕上的地图;当你输入一个地址时,相关信息还会在地图的对应位置显示出来;最后,当它们都与 Web程序完美结合以后,Web应用终于攀上了新的巅峰。这些操作都不会带来页面的刷新!

当用户界面与 Ajax结合以后,Web浏览器就可以只在必需的时候,才会向服务器发起请求,获得少量的信息。服务器返回的结果都是被格式化或者处理过的,页面会直接把结果显示出来,然后用户就可以在浏览器中看到变化。因为只有发生变化的那一块区域会被重新渲染,而不是整个页面进行刷新,所以对于用户来说,响应速度就变得更快了。

从 UI发出的请求和事件很相似——它们是不连续的,所传递的只是一个单独的组件或者功能的信息。现在的操作已经再也不需要获取整个页面的信息了,它们变得更加精细,跨应用的可重用性也变得更高。其结果就是,当一个 Ajax用户界面调用基于 Action的框架时,这个 Action框架的反应机制就和基于组件的框架非常相似。实际上,这二者的结合为我们带来了耦合度更低、可重用性更高的系统。同样的操作,可以为 Ajax组件提供 JSON、XML或者 HTML片段视图,又可以和其他操作组合,为非 Ajax的用户界面提供HTML视图。
 
核心组件

从全局的角度来看 ,Struts2是一个 pull(拉)类型的 MVC(或者 MVC2)框架,它与传统类型的 MVC 框架的不同之处就在于在Struts2 中,Action 担任的是模型的角色,而非控制器的角色,虽然它的角色仍然有些重叠。“pull”的动作由视图发起,它直接从Action 里拉取所需的数据,而不是另外还需要一个单独的模型对象存在。

我们刚刚从概念上讲述了一下 Struts2里面的 MVC,那么从实现的层面上来看又是什么子呢?在 Struts2 中,模型-视图-控制器模式通过五个核心组件来实现——Action、拦截器?值栈/OGNL?结果类型和结果/视图技术。

在阅读时要注意一点,这里的讲解只是帮助读者掌握一些背景知识,并没有采用最有效率的配置方式。
分享到:
评论

相关推荐

    创建Web应用的技术发展过程.docx

    创建Web应用的技术发展过程.docx

    创建Web应用的技术发展过程.doc

    创建Web应用的技术发展过程.doc

    MVC模式在WEB开发中的应用

    Flash技术不断发展,以及JavaScript等各种老技术的新应用,逐渐弥补着Web应用与桌面应用相比交互上的不足。但由于Web本身和相关一些技术的原因,例如Http的瞬时性和无状态性,与传统的桌面编程有着很大的差别,所以...

    基于JAVA的WEB应用开发实训教程.doc

    本文详细介绍了基于Java技术的Web应用开发的全过程,从Web应用体系架构的基本知识到基于B/S结构的Web应用开发,再到请求/响应模型、消息格式、HTTP头域信息、响应消息和Web应用程序的发展等方面。

    论文研究-WEB应用程序漏洞发掘原理 .pdf

    WEB应用程序漏洞发掘原理,黄玮,,Web应用程序由于其良好的跨平台性和交互性特点,正在得到越来越普遍的应用。伴随着Web应用程序发展的过程中,各种针对Web应用程序的

    Ajax技术在Web系统中的应用研究-硕士论文1

    Ajax技术在Web系统中的应用研究Ajax论文收集了很久。...传统Web应用采用同步交互过程进行工作。Ajax技术异步交互的特点可以使Web应用极大的提升用户体验和Web操作效率,为新时代的Web应用系统开辟了一个新的发展方向。

    Web应用安全机密与解决方案

    在网络技术和电子商务飞速发展的今天,Web应用安全面临着前所未有的挑战。本书凝聚了作者们超过30年的Web安全从业经验,详细剖析了Web应用的安全漏洞,攻击手法和对抗措施,一步步的教授如何防御邪恶的攻击,并协助...

    [第10讲]从传统监控到SCADA应用,WEB技术的应用、价值及发展.flv

    [第10讲]从传统监控到SCADA应用,WEB技术的应用、价值及发展flv,主要内容包括:1. Information Server是Wonderware系统平台的关键组件。2. Information Server。3. Wonderware Information Server概述。4. ...

    web服务在电子商务中应用研究版.doc

    随着电子商务的发展,企业内部、企业间的商业过程交互需求越来越强烈,传统的网络数据交换方式等己经不能满足商业过程交互的需求。因此,动态电子商务应运而生。实现动态电子商务的关键技术是web服务,它为分布式计算...

    浅析MVC模式在WEB开发中的应用

    PHP作为一种简单易用的开发语言,它的第五版对Object Oriented思想加入了完全的支持,使用MVC模式,PHP就能完成复杂的Web应用的开发。是否采用MVC,如何使用MVC,一个最根本的原则是不要为了使用而使用。本文首先...

    嵌入式WEB Server设计与应用

    的开发和数据采集模块的开发,在开发过程中解决了WEB SERVER与 数据模块的连接,提高系统的实时性能以及动态WEB的实现等一系列 关键性问题。 本文 从 嵌 入式系统的结构,嵌入式数据库的实现技术和嵌入式WEB SERVER...

    黑客攻防技术宝典:Web实战篇(第2版)1

    前言第1章 Web应用程序安全与风险1.1 Web应用程序的发展历程1.1.1 Web应用程序的常见功能1.1.2 Web应用程序的优点1.2 Web应用程序安

    第一章 JSP和WEB应用程序

    另一个原因在于JSP支持强大的Web应用程序开发模式,它可以把外观呈现与处理过程分隔开来,使得擅长图形制作、布局的网页设计师与精通服务器端技术(例如多线程,资源池, 数据库和高速缓存)的程序员能够协调地工作...

    Web应用程序完全测试指南

    大量的优质应用逐渐提升了用户的品味,也降低了用户的容忍度,如果你的Web应用无法使用户满意,那么很快会有其他应用来代替。这要求开发者从各方面对其进行测试,以便让用户在使用过程中不会出现各种各样的问题。...

    IT互联网发展历程.pptx

    IT互联网发展历程 IT互联网发展历程全文共11页,当前为第1页。 行业发展历程 1、UI的定义。 2、web的定义。 3、PHP的定义。 IT互联网发展历程全文共11页,当前为第2页。 UI的定义 UI设计师简称UID(User Interface ...

    论文研究-基于接口自动机的Web应用验证.pdf

    Web应用的快速发展及其一些异于传统程序的特点使Web应用的验证面临了新的挑战。使用接口自动机对Web应用的构件和构件组合进行行为建模,设计了接口自动机到模型检验器Spin程序的转换算法,然后利用Spin检验Web应用的...

    Web安全测试学习手册.pdf

    随着Web2.0、社交网络、微博等等一系列新型的互联网产品的诞生,基于Web环境的互联网应用越来越广泛,企业信息化的过程中各种应用都架设在Web平台上,Web业务的迅速发展也引起黑客们的强烈关注,接踵而至的就是Web...

    Web与云服务交互技术综述

    Web及服务技术的发展促使大量标准和协议的制定,用于松耦合软件组件之间的交互,无论是Web应用、整合应用(mashup,聚合)、app、移动设备应用,还是企业级服务都是如此。云计算是服务的工业化,是Web与企业服务在...

    CSS3实现的个人或者公司发展历程时间轴

    网页时间轴一般用于展示以时间为主线的事件,如个人成长经历或者企业网站常见的公司发展历程等。给大家介绍一款基于HTML5和CSS3的漂亮的垂直时间轴,它可以响应页面布局,适用于HTML5开发的PC和移动手机WEB应用。

Global site tag (gtag.js) - Google Analytics