软件开发中的MVC设计模式

   软件开发的目标是减小耦合,让模块之前关系清晰.

  MVC模式在软件开发中经常和ORM模式一起应用,主要作用是将(数据抽象,数据实体传输和前台数据展示)分层,这样前台,后台,数据库三层分离,减小耦合.

  框架应用 : Spring MVC - 开发详述

  1)Model  :  负责抽象并存储数据库数据

  2)Controller :  负责数据的转化和传输

  3)View    :  负责展示数据

  注意 框架的应用使软件开发变得更有章可循,更规范化,软件开发的每个职责都落到了具体的模块中去

      ORM框架 : 将数据库数据封装存储至Model类中

      MVC框架 : 前台数据与实体数据的互为转化

      开发者   : 配置框架,编写业务代码,前台数据展示页面

SpringMVC工作流

  SpringMVC是建立在Spring framework之上的一个MVC框架,主要的组件有前端控制器处理器映射器处理器适配器视图解析器.

   框架应用 : Spring MVC - 开发详述

  1.SpringMVC的原理就如上图所展示的,客户端发来HTTP请求,

  2.前端控制器作为一个顶层执行者获取请求,

  3.返回一个执行链HandlerExecutionChain{HandlerInterceptor1,HandlerInterceptor2,Handler},

  4.前端控制器请求映射器查询对应的处理器适配器,

  5.处理器适配器代理执行处理器,

  6.处理器响应处理,返回一个ModelAndView,

  7.适配器返回一个ModelAndView至前端控制器

  8.前端控制器请求视图解析器执行解析,

  9.解析器返回一个未经渲染的视图

  10.前端控制器渲染视图,将模型数据存于request域

  11.视图发至浏览器进行渲染呈现

  注意,上图分为Model,View,Controller等模块,其中Model里面可封装许多逻辑,这一部分未在步骤上进行说明.

对比Struts2

  1.SpringMVC的前端入口是一个名为DispatchServlet的servlet,Struts2是一个Filter过滤器;

  2.SpringMVC基于方法进行开发(一个url对应一个方法),请求参数传递到方法的形参,可以设计为单例或者多例模式,Struts2是基于类开发,传递的参数通过类的属性进行传递;

  3.Struts2采用值栈存储请求和响应,通过OGNL存取数据,SpringMVC通过参数解析器将request内容进行解析,并给方法形参赋值,将数据和视图封装成一个ModelAndView对象,最后将ModelAndView的数据传入request中以及视图渲染,JSP使用JSTL来进行取值操作;

组件职责描述

1.前端控制器DispatcherServlet(无需开发者开发)

作用 : 接收请求,响应结果,相当于转发器,中央处理器. 

  有了DispatcherServlet减少了其它组件之间的耦合度. 

类位置  org.springframework.web.servlet.DispatcherServlet.class

配置文件  /org/springframework/web/servlet/DispatcherServlet.properties

<servlet>
<servlet-name>springmvc</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<init-param>
<param-name>contextConfigLocation</param-name>
<param-value>classpath:springmvc.xml</param-value>
</init-param>
<load-on-startup>1</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>springmvc</servlet-name>
<url-pattern>*.action</url-pattern>
</servlet-mapping>
配置方式

相关文章: