Struts与Struts2对比详解:从HelloWorld到Action重构

需积分: 0 0 下载量 97 浏览量 更新于2024-07-28 收藏 339KB DOC 举报
本文档深入比较了Struts和Struts2两个版本的Java Web框架,旨在帮助读者理解两者之间的主要区别,以提高开发效率。作者Ivan在2008年11月16日分享了他的研究成果,欢迎读者提出更正。 首先,从HelloWorld示例入手,作者强调了它们在基础页面结构上的相似性。在Struts和Struts2中,登录页面(login.jsp)的基本HTML元素保持一致,只是Action组件的后缀略有不同,Struts使用".do",而Struts2使用".action",这可以通过配置进行调整,因此两者的页面结构在功能上几乎相同。 然而,两者在数据处理方式上存在显著差异。在Struts中,每个页面都需要一个自定义的ActionForm,它是数据从页面到控制器的桥梁,需要继承自ActionForm类。这种方式虽然明确职责,但导致了代码冗余,因为每个页面都要创建一个独立的FormBean。相比之下,Struts2摒弃了ActionForm的必要,开发者可以直接使用Java对象(Pojo)作为数据模型,只需在Pojo中添加一个名为execute的方法,这体现了Struts2的无侵入性和代码简洁性。 在Struts中,Action类是处理业务逻辑的核心,所有的Action必须继承自Action基类并重写execute方法。在Struts2中,execute方法默认会被调用,开发者只需返回一个字符串结果即可,简化了Action的编写。这展示了Struts2如何通过减少代码量和提升灵活性提升了开发体验。 此外,文章并未提及具体的数据库交互,但提到了在Struts中可能需要连接数据库对用户输入进行验证或处理,而在Struts2中,这部分逻辑可以在execute方法中集成,或者使用注解进一步简化。 总结来说,Struts与Struts2的主要区别在于ActionForm的处理、Action类的设计以及对Java对象的利用程度。Struts2通过去耦合、无侵入和更统一的API,提供了更为简洁和灵活的开发环境。随着技术的发展,Struts2相较于Struts在现代化Web应用开发中的优势更加明显。学习者可以根据项目需求和团队偏好选择适合的框架。