zoukankan      html  css  js  c++  java
  • 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的,只不过它在一些具体的细节上做了较好的封装,成为框架,使我们灵活方便的使用。
     
     
  • 相关阅读:
    百度搜索API v3版本与soap
    Yii整合ZF2及soap实例
    Getting started writing ZF2 modules
    js写出php中的函数系列
    一些有用的命令
    a标签至于flash之上的时候,IE浏览器无法点击连接的问题
    js问题集锦
    php常用函数集锦[备份用的]
    用过的一些js函数[备份用的]
    ELK
  • 原文地址:https://www.cnblogs.com/CharmingDang/p/9663936.html
Copyright © 2011-2022 走看看