Struts2是一个由Apache Software Foundation (ASF) 支持的开源MVC(Model-View-Controller)框架,由Craig R. McClanahan在2000年捐献并于2005年发布。相比于Struts 1,Struts2在设计上具有显著改进,特别是在与Servlet API和Struts API的耦合性上,Struts2采用了无侵入式设计,使得应用开发更加灵活,降低了对底层API的依赖。
Struts2的核心特性包括:
1. **页面导航和控制**:Struts2提供了一种更强大的方式来管理页面间的导航,实现了MVC中的C(控制)角色,使得开发者能够更好地组织和管理应用程序的流程。
2. **数据验证**:Struts2内置了数据验证机制,可以直接在Action中进行输入参数的合法性检查,无需像Struts 1那样依赖底层库。
3. **拦截器机制**:Struts2引入了拦截器(Interceptor),这使得面向切面编程(AOP)成为可能,能够实现如权限控制、日志记录等功能,增强了代码的可重用性和可维护性。
4. **类型转换器**:Struts2内置类型转换器,可以自动将请求参数转换为所需的类型,避免了在Struts 1中手动注册转换器的繁琐过程。
5. **表现层技术**:Struts2支持多种表现层技术,如JSP、FreeMarker和Velocity,提高了开发者选择最合适的视图技术的灵活性。
6. **输入校验的灵活性**:Struts2允许对特定方法进行输入校验,解决了Struts 1中全局校验的局限性,使得验证更为精确和高效。
7. **国际化资源管理**:Struts2提供了不同范围(全局、包和Action级别)的国际化资源文件管理,便于处理多语言应用。
从Struts 1.2升级到Struts2,主要变化在于控制器的设计模式,Struts 1使用ActionServlet,而Struts2则通过过滤器实现控制器功能。这不仅简化了开发流程,还为框架的扩展和定制提供了更大的灵活性。
Struts2作为Struts 1的后续版本,不仅在设计哲学上有所提升,还引入了现代Web开发所需的关键功能,使其成为构建高效、可维护的MVC应用的理想选择。