Struts是一个开源的Model-View-Controller (MVC) 框架,主要用于Java Web应用程序的开发。在Struts1版本中,Action是关键组件,它负责处理用户的请求并决定如何响应。在struts-config.xml文件中,Action的配置位于`<action-mappings>`部分,这有助于组织和管理Action的路由。
在配置Action时,以下几个重要的属性需要明确:
1. **path**: 这是Action的URL映射路径,例如`/login`,不包含".do"后缀。用户通过这个路径访问Action。
2. **type**: 指定了Action的类名,通常是完整的类路径,如`com.example.LoginAction`。这是通过HTTP请求触发的Action类。
3. **name**: 表示与之关联的ActionForm的名称,ActionForm是用户提交表单数据的对象,Struts会根据这个名字创建并填充数据。
4. **scope**: 可能的值有`session`或`request`,定义了ActionForm在会话期间的生存期。默认情况下,通常选择`request`,因为这样ActionForm在每次请求结束时都会被销毁,有利于内存管理。
在Struts的工作流程中,用户通过浏览器发送请求,这些请求首先由Servlet引擎接收。然后,Struts会解析请求,找到相应的Action,执行Action中的业务逻辑,并根据Action的定义决定是否转发到其他页面或视图。这种分离关注点的设计(MVC)使得项目更加模块化,降低耦合度,便于维护和扩展。
Struts1遵循Model1和Model2设计模式的演变,Model1强调JSP和JavaBean紧密集成,导致维护困难和代码冗余。Model2引入了MVC架构,将表现层(View)、业务逻辑层(Controller)和数据模型层(Model)分离,使得开发更加灵活且易于维护。
在实际开发中,Struts1与Spring(用于业务逻辑管理)和Hibernate(用于持久化层)等其他框架结合使用,形成经典的Spring MVC或Spring Struts架构,进一步提升了开发效率和项目的整体质量。SSH(Spring, Struts, Hibernate)组合成为了当时企业级Java应用开发的首选框架之一,因为它提供了高效、模块化和可扩展的开发环境。随着技术的发展,Struts2和后来的WebWork逐步取代了Struts1,但Struts1的学习和理解对于理解早期的MVC模式仍然有价值。