1. Struts 优缺点
Struts自2001年发布以来,在Web MVC领域拥有大量的用户群。优缺点也显露无疑。
优点:
(1) 标准的MVC实现方式,结构清晰,使开发者更加关注业务逻辑的实现。
(2) 丰富的标签库,使JSP页面开发更加简单。
(3) 通过配置文件实现良好的页面导航机制。
(4) 提供统一的Exception处理机制。
(5) 提供统一的数据库连接池的管理。
(6) 支持国际化等诸多本地操作功能。
缺点:
(1) Action采用单例模式设计,必须是线程安全的。因为在Struts中一个Action用来处理所有用户的请求,故存在资源共享的问题,所以必须考虑线程安全问题。我们的做法是尽可能的不定义类成员变量。
(2) 测试不方便。因Action、ActionForm都与Servlet耦合,这样测试就必须依赖Web容器。
(3) ActionForm与表单的对应关系过于死板。
(4) 只支持单一的JSP视图模式。
2. Struts 2 概述
Struts 2的体系结构与Struts 1差别很大。Struts 2采用Webwork设计核心。Struts 2中大量使用拦截器来处理用户的请求,从而允许用户的业务逻辑控制器与Servlet API分离。
Struts 2 对Struts 1进行了如下的改进:
在Action实现方面:Struts 1中必须要求统一扩展自Action类,而Struts 2中Action就是一个简单的POJO。
在Action设计方面:Struts 1采用单例模式设计,一个Action实例处理所有请求,而Struts 2采用一个请求对应一个Action实例的模式设计,不存在资源共享问题。
Servlet依赖方面: Struts1的Action依赖于Servlet API,比如Action的execute方法的参数就包括request和response对象。这使程序难于测试。Struts2中的Action不再依赖于Servlet API,有利于测试,并且实现TDD。
封装请求参数:Struts1中强制使用ActionForm对象封装请求的参数。Struts2可以选择使用POJO类来封装请求的参数,或者直接使用Action的属性。
表达式语言方面:Struts1中整合了EL,但是EL对集合和索引的支持不强,Struts2整合了OGNL(Object Graph Notation Language)。
绑定值到视图技术:Struts1使用标准的JSP,Struts使用“ValueStack”技术。
类型转换:Struts1中的ActionForm基本使用String类型的属性。Struts2中使用OGNL进行转换,可以更方便的使用。
数据校验: Struts1中支持覆盖validate方法或者使用Validator框架。Struts2支持重写validate方法或者使用XWork的验证框架。
Action执行控制的对比:Struts1支持每一个模块对应一个请求处理,但是模块中的所有Action必须共享相同的生命周期。Struts2支持通过拦截器堆栈为每一个Action创建不同的生命周期。
从某种程度上看,Struts2是从WebWork2上升级得到的。甚至Apache的官方文档也讲:WebWork2到Struts2是平滑的过渡。我们甚至也可以说Struts2就是WebWork2.3而已。在很多方面Struts仅仅是改变了WebWork下的名称。
目前,Struts已经分化成两个框架:第一个框架是传统的Struts1和WebWork结合后的Struts2。Struts2虽然是在Struts1的基础上发展起来的,但实质上是以WebWork为核心,Struts2为传统的Struts1注入了WebWork的设计理念,统一Struts1和WebWork两个框架,允许Struts1和WebWork开发者同时使用Struts2框架。
Struts分化出来的另一个框架是Shale,这个框架远远超出了Struts1原有的设计思想,它与原有的Struts1的关联很少,它使用全新的设计思想。Shale更像一个新的框架,而不是Struts的升级。而Shale则是建立在JSF之上。
分享到:
相关推荐
以上介绍的是Struts2最少jar包及其功能说明,了解这些基本信息对于搭建Struts2开发环境、配置项目是非常有帮助的。开发者可以根据具体项目需求,选择合适的版本,并结合其他必要的工具和技术来构建稳定可靠的Web应用...
然而,随着时间的推移,Struts2在安全方面暴露出了一些重要的漏洞,这给使用该框架的系统带来了潜在的安全风险。"Struts2漏洞检查工具Struts2.2019.V2.3"是一个专门针对这些漏洞进行检测的工具,旨在帮助开发者和...
Struts2是一个非常流行的Java Web开发框架,它基于MVC(Model-View-Controller)设计模式,极大地简化了创建企业级Web应用的过程。在Java世界里,Struts2以其灵活性、可扩展性和丰富的插件库而备受推崇。"struts2 ...
Struts2 项目开发 Struts2 是一个基于 Java Web 的框架,广泛应用于 Web ...通过了解 Struts2 框架的应用、开发流程、技术架构、实践经验等方面的知识点,可以更好地应用 Struts2 框架,开发高质量的 Web 应用程序。
Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试Struts2漏洞测试...
Struts2是一个非常流行的Java MVC框架,用于构建企业级Web应用程序。然而,它在历史上曾出现过多个安全漏洞,其中最著名的就是“Struts2漏洞”。这个标题和描述提到的"struts2-scan"是一种工具,专门用来检测Struts2...
Struts2是一个强大的Java EE应用程序框架,主要用于构建企业级的Web应用。它的核心是MVC(Model-View-Controller)设计模式,可以帮助开发者组织代码,提高开发效率,并且提供了丰富的特性来支持表单验证、国际化、...
### Struts1与Struts2的主要区别 #### 概述 Apache Struts 是一个用于构建企业级Java Web应用的开源框架。它分为两个版本:Struts1 和 Struts2。虽然两者都基于模型-视图-控制器(MVC)设计模式,但它们之间存在...
struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全struts2 总结工程大全...
### Struts2核心知识点解析 #### 一、Struts2框架概述 - **定义与特点**:Struts2是一款基于MVC(Model-View-Controller)设计模式的Java Web应用程序框架,它继承了Struts1的优点,同时在设计上更加灵活、易用,...
struts2-core-2.0.1.jar, struts2-core-2.0.11.1.jar, struts2-core-2.0.11.2.jar, struts2-core-2.0.11.jar, struts2-core-2.0.12.jar, struts2-core-2.0.14.jar, struts2-core-2.0.5.jar, struts2-core-2.0.6.jar,...
同时,需要注意的是,这两个漏洞的修补需要对 Struts2 的配置文件进行修改,因此需要对 Struts2 的配置文件有充分的了解和掌握。 Struts2 的 S2-016 和 S2-017 漏洞的修补需要对 Struts2 的源代码和配置文件进行...
深入解析Struts2架构设计与实现原理》以Struts2的源代码为依托,通过对Struts2的源代码的全面剖析深入探讨了Struts2的架构设计、实现原理、设计理念与设计哲学,对从宏观上和微观上去了解Struts2的技术内幕提供了...
通过深入研究和分析struts2-showcase项目,开发者能够全面了解Struts2的特性和最佳实践,从而在实际项目中更好地利用这一强大的框架。同时,它也是一个很好的学习资源,帮助初学者快速上手Struts2开发。
**Struts2漏洞详解** Struts2是一款广泛应用于企业级Java Web开发的开源框架,它为构建MVC...而“K8 Struts2 Exp 20160516”这样的工具提醒我们,对安全漏洞的利用工具必须有足够的了解,以便更好地防御潜在的攻击。
这个标题“struts2 各版本所需最少jar包整理”指的是在不同版本的Struts2中,为了最小化项目依赖并确保框架正常运行,需要的最低限度的JAR库集合。 Struts2的核心依赖包括以下几个关键部分: 1. **核心库**:`...
根据提供的文件信息,我们可以从《Struts 2实战 Struts2 in Action》这一书籍中提炼出与Struts 2框架相关的多个重要知识点。Struts 2是一个基于Java的开源Web应用框架,它继承了Struts 1的优点并进行了大量的改进和...
Struts2实战 知识点: 1. Struts2框架的介绍:Struts2是Struts的下一代...以上就是Struts2框架的主要知识点,通过这些知识点的介绍,我们可以了解到Struts2框架的强大功能和灵活应用,它在Java Web开发中的重要地位。
本书以Struts2的源代码为依托,通过对Struts2的源代码的全面剖析深入探讨了Struts2的架构设计、实现原理、设计理念与设计哲学,对从宏观上和微观上去了解Struts2的技术内幕提供了大量真知灼见。同样重要的是,本书...
首先,我们要了解Struts2的核心概念。Struts2是一个基于MVC(Model-View-Controller)设计模式的框架,它的主要目标是简化Java Web应用的开发过程。在Struts2中,模型负责业务逻辑,视图负责展示数据,控制器则协调...