2025年struts2工作原理简介(2025年struts1原理和工作流程)
Struts2的核心工作原理
核心控制器:FilterDispatcher FilterDispatcher是Struts 2框架的核心控制器,该控制器作为一个Filter运行在Web应用中,它负责拦截所有的用户请求,当用户请求到达时,该Filter会过滤用户请求。如果用户请求以action结尾,该请求将被转入Struts 2框架处理。
Struts 2的工作流程相对于Struts 1要简单,与WebWork框架基本相同,所以说Struts 2是 WebWork的升级版本。Struts 2框架按照模块来划分,可以分为Servlet Filters、Struts核心模 块、拦截器和用户实现部分。Struts 2框架结构图如图1所示。 一个请求在Struts 2框架中的处理大概分为以下几个步骤。
Struts2工作流程:客户端(Client)向Action发用一个请求(Request)Container通过web.xml映射请求,并获得控制器(Controller)的名字 容器(Container)调用控制器(StrutsPrepareAndExecuteFilter或FilterDispatcher)。

Struts2简介
1、Struts2的发展:Struts2起源于Jakarta项目中的一个子项目,后转向Apache软件基金会,成为非盈利的开源项目。它是Struts1的升级版,通过“WebWork”进行升级,继承了“WebWork”的优势,而非直接继承“Struts1”。Struts2在性能和稳定性上都有很好的保证。
2、Struts2:有自己的interceptor机制,但配置文件量相对较大。SpringMVC:采用了独立的AOP方式实现拦截器,这使得SpringMVC的配置文件量相对较小,且更加灵活。入口与机制 Struts2:入口是filter,filter是servlet的一种特殊形式,用于在请求到达servlet之前或之后进行预处理或后处理。
3、Struts2源于Webwork,它集成了Struts和Webwork的优势。Struts2利用J2SE5的注释功能,为开发者提供了一种新的配置方式,使得代码更加简洁、易于理解和维护。这种创新的设计不仅提高了开发效率,还简化了开发流程,使得开发者能够更快地实现业务需求。然而,Struts2与Strutsx在使用上存在显著差异。
4、Struts2是一个基于web works的MVC框架,MVC是由Model(模型)、View(视图)、Controller(控制器)组成。
简述Struts2的用途和优势
Struts2的设计理念更加注重灵活性和可扩展性,通过减少对容器的依赖,增强了框架的独立性和可移植性。它的过滤器机制和OGNL表达式语言使得开发者可以更自由地进行页面逻辑处理和数据绑定,从而提高了应用开发的效率和质量。Struts2的无状态设计和每个请求实例化一个新的Action对象,极大地减少了线程安全的问题,同时也简化了代码逻辑,使得维护和扩展变得更加容易。
下面我从使用Struts2一年之久的经验来分析一下Struts2的优点:Struts2基于MVC架构,框架结构清晰,开发流程一目了然,开发人员可以很好的掌控开发的过程。
Struts2通过其强大的配置和灵活的扩展性,使得开发者能够更高效地开发Web应用程序。同时,其基于MVC的设计模式也使得代码更加清晰、易于维护。
关于struts2,hibernate2,spring3,面试时让我说下这三大框架的工作原理...
struts2代表控制层,hibernate数据持久层,spring相当于容器,可以整合struts2,hibernate。
hibernate框架主要是负责连接数据库,把每个数据表转化为一个类,表中的每行数据相当于类的一个对象,hibernate通过对象的方式进行读取操作。说到spring,不得不说控制反转,有关控制反转,请搜索“java设计模式”。
说struts2是控制层是错误的,因为struts2本身就是一个标准的Web层的MVC框架,主要控制的是用户的请求——程序的处理——程序的返回这个流转过程。hibernate是一个持久层的框架,他在JDBC上进行的轻量级的封装,是用户可以直接用面向对象的方式来操作关系型数据库。
Spring其实可以理解为一个”胶水“,利用IoC和AOP,可以与Struts 2和Hibernate进行整合,比如管理Struts2 Action,负责业务层代码注入,实现数据库的注解式事务管理等等。在这三个框架其实每个方面都有替代的方案,比如Struts 2可以改用SpringMVC,Hibernate改用MyBatis,Spring IoC也有Google Guice可替。
三大框架的大致流程jsp-struts-service-hibernate。因为struts负责调用Service从而控制了Service的生命周期,使得层次之间的依赖加强,也就是耦合。所以我们引用了spring,spring在框架中充当容器的角色,用于维护各个层次之间的关系。
Strut2没有继承Struts 1的血统,而是继承了WebWork的血统。或者说,WebWork衍生出了Struts 2,而不是Struts 1衍生了Struts 2。Struts 2是WebWork的升级,而不是一个全新的框架,因此稳定性、性能等各方面 都有很好的保证;而且吸收了Struts 1和WebWork两者的优势。