Apache Struts Web框架是一个免费的开源解决方案,用于创建Java Web应用程序。
Web应用程序与传统网站的不同之处在于,Web应用程序可以创建动态响应。许多网站仅提供静态页面。Web应用程序可以与数据库和业务逻辑引擎交互以定制响应。
基于JavaServer Pages的Web应用程序有时会混杂数据库代码、页面设计代码和控制流代码。在实践中,我们发现除非将这些关注点分离,否则较大的应用程序将难以维护。
在软件应用程序中分离关注点的一种方法是使用模型-视图-控制器(MVC)架构。模型代表业务或数据库代码,视图代表页面设计代码,控制器代表导航代码。Struts框架旨在帮助开发人员创建利用MVC架构的Web应用程序。
该框架提供了三个关键组件:
该框架的架构和标签符合流行术语。Struts与传统的REST应用程序以及SOAP和AJAX等技术配合良好。
Apache Struts项目是创建和维护Apache Struts框架的开源社区。该项目由一群多元化的志愿者组成,他们共享关于协作式、基于社区的开源开发的共同价值观。Apache Struts项目很自豪能与我们的母组织Apache软件基金会分享这些价值观。
该项目之所以被称为“Struts”,是因为该框架旨在提供支持专业应用程序开发的“无形基础”。Struts提供了将标准Java平台的各种元素连接成一个连贯整体的粘合剂。我们的目标是通过创建我们需要的缺失部分来利用现有标准,以构建易于长期维护的企业级应用程序。
Apache Struts项目提供了两个主要版本的Struts框架。目前我们只维护Struts 2版本。建议将所有Struts 1.x应用程序升级到Struts 2。请不要使用Struts 1.x开始新的应用程序开发,因为我们不再发布安全补丁。
Struts 2最初被称为WebWork 2。在独立工作几年后,WebWork和Struts社区联合创建了Struts 2。2.x框架是重视优雅解决难题的团队的最佳选择。
Apache Struts是一个现代、维护良好且功能齐全的Web框架。它已存在多年,拥有庞大的用户群,不太可能在不久的将来消失。不仅如此,我们还有专注的用户和开发者参与该项目。Apache Struts采用Apache License 2.0许可,这不会改变。我们保持干净的知识产权,你可以“安全”地使用该项目。有时,当一家公司控制SCM时,你不能“安全”地使用一个项目。访问源代码并不意味着它是免费的。使用Apache Struts,你不仅可以自由地“用它做你想做的事”,你甚至还可以贡献(这并非总是如此)。最棒的是:你也可以成为核心团队的一员。
通常,将其他技术与Apache Struts集成非常容易。如果你使用像Apache Cayenne、Hibernate或JDBC这样的ORM,你不会遇到任何限制。Apache Struts甚至不局限于某种前端技术。过去是JSP,然后是Velocity和Freemarker。如今,你可能只使用静态HTML和AngularJS来构建Web应用程序。或者你想使用Sitemesh或Tiles。所有这些都没有问题,这归功于Struts优雅且易于使用的扩展机制。
与其他面向组件的框架不同,我们不试图隐藏Web的无状态本质。我们认为基于请求/响应周期进行构建是完全可以接受的。我们也认为MVC模式并不那么糟糕,仅仅因为它很老。事实上,我们相信Apache Struts架构清晰且易于理解。
当然,如果你希望在服务器端构建组件并在前端渲染,那么使用Struts很可能是不正确的。这是一种不同的方法,旨在减少所需的HTML/JavaScript知识量,并为视图层创建可重用组件。像Wicket和Tapestry这样的项目非常适合这个目的。与每个框架一样,你需要决定构建组件是否有意义,或者你是否更适合Struts的方法。