Struts是如何实现MVC的

admin 2025-11-03 14:16:47 2022世界杯直播

Struts是如何实现MVC的

Struts是如何实现MVC的

最新推荐文章于 2025-11-02 10:47:54 发布

原创

最新推荐文章于 2025-11-02 10:47:54 发布

·

105 阅读

·

0

·

0

·

CC 4.0 BY-SA版权

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

文章标签:

#struts

#mvc

#java

#后端

本文详细解析了Struts MVC框架的基本实现原理,包括前端控制器的设计模式、ActionServlet的导航流程、ActionForm和Action的使用方式,以及Struts框架如何通过配置文件实现MVC的封装与灵活应用。

下图为基本的MVC的流程,MVC的框架就是基于下图来做的。只是控制器这部分MVC做的比较强大,做成了可配置的,统一处理的等等。

从MVC分类来看,Struts这种MVC明显的要处理request和response,其实做web开发的过程中都在处理,这种MVC框架,称为面向请求驱动的MVC框架。比如,struts,webwork。

还有一种MVC框架,就是不知道request和response。把这些都封装起来了,这种框架是基于事件驱动的mvc框架,所以叫做面向事件的MVC框架(或者叫做事件驱动的MVC框架)。比如:JSF,Tapestry。

以下图:是Struts1的流程图,Struts1还是比较重要的框架。

说明:

一个基本的MVC最基本的实现的核心的原理,它要通过一个控制器,这个控制器我们用的是servlet(其实可以用别的,像struts用的是filter,在struts1中是servlet)。这个servlet做的是什么事情呢?截取URL并分发。具体过程为:web客户端传来请求,需要遵循一定的规则,是.do还是.action,只有遵循了这个规则,才能到达servlet,servlet才能统一处理得到的请求。把请求URL拿到,截取下来,根绝截取下来的URL到配置文件中找到对应的Action,调用Action对应的excute方法。

前端控制器其实是一种设计模式,我认为前端控制器更类似于外观模式,外观模式定义:为子系统中的一组接口提供一个一致的界面,Facade模式定义了一个高层接口,这个接口使得这一子系统更加容易使用。

采用UML时序图进一步讲解Struts对MVC的实现,图片不清,请点这里看大图

Struts框架已经提供了ActionServlet,所以它不需要我们编写,需要我们编写的是ActionForm和Action。

Struts框架其他组件具体说明如下:

1.ActionServlet类控制导航流

2.ActionServlet根据URI来决定哪个Action类被用于处理请求,Action可以校验输入,并访问业务层以便从数据库检索信息

3.Action需要知道页面提交了哪些内容,所以由ActionServlet根据请求URI来决定将请求参数绑定到哪个ActionForm中,并传入Action

4.Action在完成业务逻辑后,返回一个ActionForward对象,ActionServlet根据ActionForward对象中的路径来调用页面完成响应

5.Struts将这些信息绑定在一个ActionMapping对象中,一个ActionMapping对应一个请求URI,当请求路径到达的时,ActionServlet就会查询ActionMapping对象,ActionMapping对象将告诉ActionServlet哪个Action类会被调用、哪个ActionForm类被用于传递页面数据以及哪些ActionForward将被用于转向有关Action、ActionForm、ActionForward等信息,Struts通过一个配置文件:struts-config.xml文件来定义。

可见,Struts是基于我们最熟悉的MVC的,只不过它在一些具体的细节上做了较好的封装,成为框架,使我们灵活方便的使用。