struts2和springMVC的区别有哪些?struts2如何工作?

Struts2和SpringMVC是比较流行的MVC框架,二者的工作流程大体相似,所以有些开发人员用起来的时候有些难以区分,那struts2和springMVC的区别有哪些?接下来我们就来给大家讲解一下这方面的内容。

struts2和springMVC的区别.jpg

1、springmvc入口是一个servlet前端控制器( DispatcherServlet ),struts2入口是一个filter过滤器(StrutsPrepareAndExecuteFilter).

2、struts2通过在action类中定义成员变量接收参数,(属性驱动和模型驱动),它只能使用多例模式管理action.

springmvc通过在coontroller方法中定义形参接收参数,springmvc可以使用单例模式管理controller.

3、springmvc是基于方法开发的,注解开发中使用requestMapping将url和方法进行 映射,如果根据url找到controller类的方法生成一个handler处理器对象(只包括一个method).

struts2是基于类开发的,每个请求过来创建一个action实例,实例对象中有若干个方法.

开发中建议使用springmvc,springmvc方法更类似service业务方法.

4、struts2采用值栈存储请求和相应的数据,通过OGNL存取数据;springmvc通过参数绑定期将request请求内容解析,并给方法形参赋值.

5、struts2和springmvc的速度是相当的,由于struts2的漏洞较多,跟多企业使用springmvc

6、SpringMVC验证支持JSR303,处理起来相对更加灵活方便,而Struts2验证比较繁琐,感觉太烦乱。

7、设计思想上,Struts2更加符合OOP的编程思想, SpringMVC就比较谨慎,在servlet上扩展。

8、拦截器实现机制上,Struts2有以自己的interceptor机制,SpringMVC用的是独立的AOP方式,这样导致Struts2的配置文件量还是比SpringMVC大。

struts2如何工作?

从一个高水平角度看,Struts2 是一个MVC拉动的(或MVC2)框架,Struts2 的模型-视图-控制器模式是通过以下五个核心部分进行实现的:

1. 操作(Actions)

2. 拦截器(Interceptors)

3. 值栈(Value Stack)/OGNL

4. 结果(Result)/结果类型

5. 视图技术

而Struts2 与传统的MVC框架略有不同,因为它由Action扮演模型的角色,而不是控制器,虽然这样会有一些重叠。

1.jpg

上图描述了Struts2 高级系统架构下的模型、视图及控制器。控制器是通过Struts2 分派servlet过滤器以及拦截器进行实现,模型是通过Actions进行实现,而视图则是结果类型和结果的结合。值栈和OGNL提供共同的路线、链接以及与其他组件之间的集成。

除了上述部分,还有许多组件相关的信息。web应用程序组件、Actions组件、拦截器组件、结果组件等等。

这些是Struts2 MVC模式的体系结构概述,在随后的章节中,我们将详细了解各个部分。

请求生命周期:

通过上述图片的描述,我们可以依照下面几点解释在Struts2 中用户的请求生命周期:

1. 用户发送一个资源需求的请求到服务器(例如:页面)。

2. 核心控制器查看请求后确定适当的动作。

3. 使用验证、文件上传等配置拦截器功能。

4. 执行选择的动作来完成请求的操作。

5. 另外,如果需要的话,配置的拦截器可做任何后期处理。

6. 最后,由视图显示结果并返回给用户。

这就是Struts2的工作流程,Struts2 是目前较为普及和成熟的基于MVC设计模式的web应用程序框架,它跟springMVC虽然都是MVC框架,但是还是有区别的,希望大家一定要合理使用!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。

推荐阅读:

哪些工具可以打开json文档?怎样解析json数据?

java初级面试一般问什么?java初级面试常问问题以及答案

javaidea怎么新建项目?javaidea有哪些好用快捷键?