- 浏览: 1048168 次
文章分类
最新评论
-
cjh_android:
我想你是对的,至少对于现实是对的,不过对于技术岗位竞争越来越激 ...
程序员的思考--终于确定了自己的技术发展方向 -
dongbiying:
现在情况如何 。。
创业,不能兼职 -
jackyrong:
ie 9 下时,老显示关闭窗口提示,有办法去掉么,就是关闭掉那 ...
jquery右下角弹窗效果 -
lmaxjj:
加点班如果都称得上是累,只能说明还没体会到真正的生活。。
IT男的进化论 -
馨雨轩:
IT男要进化需要先穿越
IT男的进化论
Struts 这个名字来源于在建筑和滑翔机中用来支持的金属架 。以笔者的理解, Struts 的开发者大概是希望用该框架来支持 JSP 、 Servlet 、 Java 这些技术在 Web 项目中的使用。
当 2001 年春天, Struts 的第一个版本在 apache 网站上发布的时候。它只提供了一种分离视图和业务应用逻辑的 Web 应用方案。因为在 Struts 之前,开发人员都是在 JSP 里写入处理业务逻辑的 Java 代码,尤其是涉及到数据库和页面 Form 表单数据之间交互的时候,开发人员在每个页面都要写入像连接数据库这样的 Java 代码,导致了大量的代码冗余,而且每个页面显示速度和性能都不是很好,这是因为页面中的存储数据的 Java 对象都需要从内存中读取,势必影响性能。所以当像 Struts 这种 Web 应用方案一出现,每个开发人员都把它视为把自己从繁重的开发工作中解放出来的利器。所以在 2001-2003 这几年,大量的为企业做 Web 应用系统的 IT 公司在项目架构中都采取 Struts 作为开发中必须使用的框架。
从市场推广的角度来看, Struts 也是一个创建知名品牌的案例。由于它的闻名遐迩,很多开发人员熟悉 Struts 的应用,一批批成功应用 Struts 的 Web 项目如雨后春笋般的显现,这样就算是入门者也可以依据前人的优秀经验应用 Struts 去实现更多的 Web 项目。随着使用它作为项目开发框架的公司和人员越来越多。作为公司的领导层可以让实际开发人员把注意力更加着重放在行业知识,业务领域的研究实现工作上。技术作为实现项目的障碍这种认识已经荡然无存。
Struts 刚出现的时候,其实在它之前使用 j2ee 开发的 Web 项目都是使用 Model1 的设计模式, Model1 模式有大致三种常用的开发方式,比如之前所述的将 Java 代码写在 JSP 中,就是第一种常见的方式。还有一种就是将部分业务逻辑实现代码封装成为 JavaBean ,在 JSP 中调用这些 JavaBean 。此种方式解决之前所述冗余代码的问题,而且从内存中只读取一次封装了数据的 Java 对象,没必要频繁的读取 Java 对象。它是 Model1 模式的典型结构,如图 1.1 所示。第三种就是将 Java 中已经是标准的内置对象在 JSP 中调用。比如 J2EE 的 JDBC , JSP 中直接使用 JDBC 的标准类和方法。实际上和第二种方式是类似的,只不过第二种方式中调用的是开发者自己开发的,而第三种方式调用的是 Java 的标准类和方法。 Model1 模式对于中小项目的开发的确还是很有优势的,据笔者所知有些企业为了避免开发带来的风险,而且这些企业的相关环境决定使用其它模式没有这么迫切,因此还在使用这种模式在开发自己的企业应用。但是它的缺点太明显了,首先如果企业级应用需要改动原有需求或者新增需求,那势必需要改动很多代码,开发工作量会很大。其次就是业务逻辑代码和使用视图来表示页面的代码是在 JSP 中混合的,如果某个 JSP 页面需要重用的话,那是根本无法实现的。因为业务逻辑在每个页面肯定不同的,怎么能用一个 JSP 中的业务逻辑套用到另外一个 JSP 页面中呢?
图 1.1 Model1 模式结构
基于这些原因,在开发者中有人提出了 Model2 模式,这种模式保留了 Model1 的优点,又针对它的缺点进行了修正和改良。 Model2 模式基础概念是组件化,它的设计者在最初的设想是开发 Web 项目时候,如果需要实现某个业务逻辑将封装好的组件进行调用,而开发者不需要关心该组件内部是如何实现的。这就好比购买了一台电脑,直接开机使用就可以,没必要关心电脑内部是如何组成的,内部又是怎样实现让用户使用电脑功能这些细节化的东西。该模式采用业务逻辑、视图分离的方法,让 JSP 之负责展现表示功能,相应的业务逻辑由 Java 来实现,这样当开发新的需求或者修改原有需求时候没必要在 JSP 中更改。而且 JSP 也可以被复用。具体结构如图 1.2 所示。
图 1.2 Model2 模式结构
在有些时候,开发者也把 Model2 模式称为“ MVC ”模式。“ MVC ”是 Model 、 View 、 Controller 这三个英文单词的缩写。“ Model ”代表的业务逻辑这块由 Java 实现的组件。“ View ”则代表了表示界面,当时主要是使用 JSP 技术来实现,而现在还有笔者之前提到的 FreeMarker 、 Velocity 这些实现表示界面的视图技术。“ Controller ”代表的是处理流程控制,主要功能是实现业务逻辑如何和表示界面相关联的技术。为了方便笔者的写作,也为了让读者不引起歧义,以后章节中都将 Model2 模式称为 MVC 模式。
由于 MVC 模式的提出,彻底解决了 Model1 模式的缺点,很多开发人员开始使用这种模式来解决他们实际工作中碰到的各种各样 Web 项目开发问题。也正是在这样一个大背景下,诞生了 Struts 这个第一个运用了 MVC 模式,也是使用其的开发人员全世界最多的 Web 项目开发框架。
当然从 2003 年开始,同类型的 Web 项目开发框架也开始出现在广大开发者的视野中,由于 Struts 对新技术的支持不够,还有一些如 FormBean 一些 Struts 技术细节是否有必要实现的争论也让开发者开始质疑 Struts 的优越性。
Struts 的设计者也意识到 Struts 的一些局限性和缺点,必须进行重新设计和改良。因此在 2006 年和 WebWork 的设计者一起将这两个框架合并在一起,形成了今天的 Struts2 框架,这个框架是综合了原有两个旧框架的特点。而又去除了很多它们的缺点,特别是 Struts 的一些缺点,比如支持的视图技术太单一只支持 JSP ,还有和 Servlet 关系太紧密,不适合现在的松耦合开发理念等等。
Struts2 框架实际上也可以称为 WebWork 的一个最新版本,它的 MVC 模式实现的方法更多是来自于 WebWork 而不是 Struts , Struts 框架其实还发展了另外一个分支框架 Shale ,这个框架的设计思想更多是来自于 JSF ,只不过通过 Struts 的基础配置和代码来实现,由于 JSF 和 Struts 、 WebWork 的开发理念有很大的区别, JSF 可以称为 Web 化的 Swing 。让桌面应用程序开发结构在 Web 浏览器中实现出来。固然这点对现在的开发人员也很有吸引力,但是笔者认为还是有些不能和 Struts 、 WebWork 相比的弱点(在后面的小节中将详细叙述)。所以对于 Struts 的演变笔者更认为 Struts2 才是最正统的继承。而 Shale 则只能算作一个比较好的补充而已。
在下一节,笔者将详细概述 Struts2 的特点及其笔者认为需要改进的部分。
更多信息请查看 java进阶网 http://www.javady.com
发表评论
-
Struts之拦截器
2012-05-16 17:16 1535今天看了看拦截器,不由得想对拦截器做个描述,在我们进 ... -
struts第一篇:struts诞生记
2012-04-23 22:29 1158Struts是一个开源框架,学Struts有一段时间 ... -
Struts2教程 - 5.4.4 debug标签使用介绍
2012-04-16 21:23 1052技术要点 本节代码具体介绍 debug 数据 标签的使 ... -
Struts2教程 - 5.4.3 date标签使用介绍
2012-04-16 21:23 1172技术要点 本节代码具体介绍 date 数据 标签的使用 ... -
Struts2教程 - 5.2 OGNL表达式语言介绍
2012-04-14 21:15 2170在进行 Struts2 的标签库介绍之前,有必要着重对 ... -
Struts2教程 - 4.1 拦截器在Struts2中的缺省应用
2012-04-09 10:11 1155通过前几章介绍,读者应该明白在 Web 项目中,客户先在视图界 ... -
Struts2教程 - 使用Action类控制导航业务数据
2012-04-09 10:10 1287Struts2 中 Action 充当着一个关键的角色。它解决 ... -
Struts2教程 - 3.4 使用ActionSupport进行校验
2012-04-08 09:04 1578如果 From 数据操作有误,比如输入不是我们需要的数据, ... -
Struts2教程 - 3.3使用Action类控制导航业务数据
2012-04-08 09:04 1208Struts2 中 Action 充当着一个关键的角色。 ... -
Struts2教程 - 5.4.8--10 url标签使用介绍
2012-04-16 21:24 10715.4.8 url 标签使用介绍 ... -
Struts2教程 - 5.4.6-7push、set标签使用介绍
2012-04-16 21:23 1233技术要点 本节代码具体介绍 push ... -
Struts2教程 - 5.4.5 include标签使用介绍
2012-04-16 21:23 1239技术要点 本节代码具体介绍 inclu ... -
Struts2教程 - 5.4.4 debug标签使用介绍
2012-04-17 23:46 1045技术要点 本节代码具体介绍 debug ... -
Struts2教程 - 5.4.3 date标签使用介绍
2012-04-17 23:46 1157技术要点 本节代码具体介绍 date ... -
Struts2教程 - 5.4.2 bean标签使用介绍
2012-04-15 22:57 872技术要点 本节代码具体介绍 bean ... -
Struts2教程 - 5.4.1 action标签使用介绍
2012-04-15 22:57 1161技术要点 本节代码具体介绍 actio ... -
Struts2教程 - 5.3.7 subset标签使用介绍
2012-04-15 22:57 12175.3.7 subset 标签使用介绍 ... -
Struts2教程 - 5.3.5-6 merge、sort标签使用介绍
2012-04-15 22:57 10815.3.5 merge 标签使用介绍 ... -
Struts2教程 - 5.3.4 iterator标签使用介绍
2012-04-14 21:14 1110技术要点 本节代码具体介绍 itera ... -
Struts2教程 - 5.3.3 if、else、elseif标签使用介绍
2012-04-14 21:14 1335技术要点 本节代码具体介绍 if 、 ...
相关推荐
Jakarta Struts 1.1 是一个历史悠久的Java Web应用程序框架,由Apache软件基金会的Jakarta项目开发。这个框架在2000年代初期非常流行,它为构建MVC(模型-视图-控制器)架构的Web应用提供了一个强大而灵活的基础。在...
**Jakarta Struts 1.x 框架详解** Jakarta Struts 是一款经典的Java Web应用程序框架,由Apache软件基金...尽管现在有Spring MVC、JSF等新型框架,但Struts 1仍然具有学习价值,特别是对于理解MVC模式和Web开发历史。
在实际项目中,开发人员会将struts1.1的jar包与其他依赖库(如log4j、commons-logging等)一起添加到项目的类路径中,以便充分利用Struts框架提供的服务。开发流程通常包括编写Action类、ActionForm类、配置文件以及...
同时,为了提高安全性,需要注意防止常见的Web攻击,例如SQL注入、跨站脚本攻击(XSS)和跨站请求伪造(CSRF),因为Struts2框架历史上曾出现过一些安全漏洞。 总的来说,Struts2 2.3.1.1 all是一个全面的开发包,...
这次我们关注的是Struts2的2.2.1.1版本的源代码。 该版本的源码是为了解决特定的安全问题,特别是"Struts2 S2-016漏洞"。S2-016漏洞,全称为"Struts2 OGNL注入漏洞",是由于Struts2框架处理OGNL(Object-Graph ...
Struts 1.1 是一个历史悠久的Web应用框架,它由Apache软件基金会的Jakarta项目维护,主要用于构建基于Java的企业级应用程序。这个框架的核心是ActionServlet,它协调HTTP请求和业务逻辑之间的交互,实现了MVC(Model...
10. **安全性**:虽然Struts2在历史上曾出现过一些安全漏洞,如著名的Struts2 S2-045漏洞,但每次更新都会修复已知的安全问题,提高框架的安全性。 在Struts2.3.1.1这个版本中,可能包含了对之前版本中已知问题的...
在"struts1.1.jar"这个文件中,包含了Struts 1.1框架的核心组件和必要的类库,这些组件包括: 1. **ActionServlet**:这是Struts的核心控制器,负责处理HTTP请求并调度到相应的Action。它通过配置在struts-config....
**Struts2** 是一款流行的 Java Web 开发框架,它遵循 MVC (Model-View-Controller) 设计模式,旨在简化 Web 应用程序的开发过程。Struts2 提供了一种统一的方法来构建 Web 应用程序,并且具有良好的扩展性和灵活性...
在开发过程中,还需要关注Struts2的安全性,因为历史上它曾曝出过一些安全漏洞,如著名的STRUTS2-217漏洞,这要求我们在使用时及时更新到最新版本,以防止潜在的安全风险。 总之,Struts2的jar包集合为我们提供了...
然而,随着技术的发展,Struts 1.x已被更新的Struts 2或其他现代MVC框架替代,Hibernate也发展到了更高级的版本,而SQL Server也有多个后续版本,但了解这些早期技术对于理解现代Web开发的历史和发展至关重要。
在本压缩包"jakarta-struts-1.1"中,包含的是Struts 1.1版本的相关资源,这是早期的一个经典版本,对于理解Struts框架的历史和基本工作原理很有帮助。 1. **Struts框架核心组件** - **ActionServlet**:这是Struts...
### Struts1.0教程(简版)知识点详解 #### 1. Struts简介 - **Struts**:Struts 是一个开源的 Java Web 应用框架,它遵循 MVC(Model-View-Controller)设计模式。该框架由 Craig R. McClanahan 开发并捐赠给 ...
#### 一、Struts2的历史背景与起源 Struts2作为一款备受关注的企业级Web开发框架,在Java Web开发领域占据着举足轻重的地位。尽管Struts2声称自身是一个全新的框架,但从其发展历程来看,这种说法仅仅是从与前一代...
虽然现在已经有了更新版本的Struts(如Struts 2),但在当时,Struts 1.1是一个广泛使用的框架。 XFire 1.2则是一个SOAP(简单对象访问协议)服务框架,它允许开发者轻松地创建和消费Web服务。XFire提供了与Spring...
Struts 1.1 API是Java Web开发框架Struts的一个早期版本的官方API文档,它为开发者提供了详细的类、...尽管现在Struts已经发展到2.x版本,但1.1版的API对于学习MVC框架的基本思想和历史背景仍然具有很高的参考价值。
Struts2是一个基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它极大地简化了在Java平台上构建动态网站的过程。该框架的主要目标是提供一个结构化的框架,以便开发者可以更专注于业务逻辑而不是...
- **1.1 Struts历史发展过程** - **知识点**: 介绍了Struts框架的发展历程,包括Struts1到Struts2的演进过程。 - **核心内容**: - Struts1作为最早的MVC框架之一,解决了传统Java Web开发中代码组织混乱的问题。 ...