• 河北省重大技术需求征集系统原型(MVC框架业务流程简介)


      这段时间了解了一些MVC框架。

    一、MVC简介

      MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)设计创建 Web 应用程序的模式。它的模式是JSP + servlet + javabean 模式,它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。

      ·视图

      视图是用户看到并与之交互的界面,是由HTML元素组成的界面。MVC好处是它能为应用程序处理很多不同的视图。在视图中其实没有真正的处理发生,不管这些数据是联机存储的还是一个雇员列表,作为视图来讲,它只是作为一种输出数据并允许用户操纵的方式。

      ·模型

      模型表示企业数据和业务规则。在MVC的三个部件中,模型拥有最多的处理任务。例如它可能用像EJBs和ColdFusion Components这样的构件对象来处理数据库,被模型返回的数据是中立的,就是说模型与数据格式无关,这样一个模型能为多个视图提供数据,由于应用于模型的代码只需写一次就可以被多个视图重用,所以减少了代码的重复性。

      ·控制器

      控制器接受用户的输入并调用模型和视图去完成用户的需求,所以当单击Web页面中的超链接和发送HTML表单时,控制器本身不输出任何东西和做任何处理。它只是接收请求并决定调用哪个模型构件去处理请求,然后再确定用哪个视图来显示返回的数据。
      
      下面是它的业务流程图。

                

    二、MVC工作流程

      1.当用户在浏览器中点击一个链接或者提交一个表单时,那么就会产生一个请求(request)。当请求离开浏览器时,它会携带用户请求的信息。


      2.请求的第一站到达的是Spring的DispatcherServlet,它是一个前端控制器,工作是将用户的请求委托给其他的组件(这里是交给Spring MVC的控制器)去处理。这里DispatcherServlet要决定将请求传给哪一个控制器(Controller)去处理,那么这时就需要处理器映射(Handler Mapping)了。

      处理器映射会看请求的URL信息,然后决定将请求交给哪一个控制器去处理。比如说有两个控制器ControllerA和ControllerB,分别处理后缀名为.html和.jsp送来的请求,那么当请求者的后缀名为.html时,那么DispatcherServlet就将请求交给ControllerA进行处理。

      C代表Controller,负责用户界面和业务逻辑层的通信控制,一方面解释来自用户界面的输入,识别用户动作(如点击按钮等),调用相应Model中的方法,另一方面处理来自Model的事件和返回的执行结果,调用适当的View显示给用户,Controller主要由Servlet完成。

      M代表Model,负责整个解决方案的业务逻辑实现,底层的数据库也由Model访问和操作;

      V代表View,负责系统向用户的展示,主要由HTML及JSP等完成;

      

    三、MVC组件说明

     

      ·HandlerAdapter

      HandlerAdapter需要注册当SpirngMVC的容器里,注册方法和HandlerMapping一样,只要配置一个Bean就可以了

      这是一个接口,一共三个方法,

      使用HandlerAdapter是因为SpirngMVC没有对处理器做任何的限制,处理器可以是任何合理的方式来表示,可以是一个类,方法

      ·HandlerExceptionResolver

      ModelAndView resolveException(HttpServletRequest var1, HttpServletResponse var2, Object var3, Exception var4);

      作用:用来请求解析过程中出现的异常

      只有一个方法,从异常解析ModelAndView 

      ·ViewResolver

      Locale确定了一种专门的语言和区域,通俗一点,就是根据不同语言定制的一种规则,一个类,可以根据不同语言构造不同的类

      作用:用来将String类型的视图名和locale解析为View视图

      使用:需要注册到SpringMVC的容器里 :默认:internalResourceViewResolver

      ·RequestToViewNameTranslator

      理解定义:ViewResolver是通过ViewName去查找view的,但是Handler处理完并没有设置view和viewName,这时候就需要request去

      RequestToViewNameTranslator在SpirngMVC里面只配置一次,所以所以的request到ViewName的转换都要在有个Translator

      ·LocaleResolver

      LocaleContext resolveLocaleContext(HttpServletRequest var1);

      void setLocaleContext(HttpServletRequest var1, HttpServletResponse var2, LocaleContext var3);

      作用:ViewResolver用来获取viewName,RequestToViewNameTranslator用来获取request请求的view和viewName;

      获取locale的时候就需要LocaleResolver

      ·SpringMVC有两个地方用到了locale

      1,view视图解析的时候,为了获取viewName

      2,使用国际化主题的时候(目前不了解)

      ·ThemeResolver

      作用:解析主题用的

      ·MultipartResolver(接口)

      作用:处理上传请求的

      ·FlashMapManager(接口)

      flashmap的作用是在redirect中传递参数。大家都知道转发 request是不变的,重定向会生成新的request,那传递参数就不能直接用request进行传递。

     参考资料:https://www.jianshu.com/p/1bb9f7c29079?utm_campaign
     
     
     
          
  • 相关阅读:
    Callback2.0
    设计模式之Composite
    设计模式之Proxy
    React Native DEMO for Android
    React Native 与 夜神模拟器的绑定
    Skipping 'Android SDK Tools, revision 24.0.2'; it depends on 'Android SDK Platform-tools, revision 20' which was not installed.
    .ui/qrc文件自动生成.py文件
    简单排序算法
    Big O
    设计模式之Adapter
  • 原文地址:https://www.cnblogs.com/yandashan666/p/10473823.html
Copyright © 2020-2023  润新知