首页 > 代码库 > Spring MVC

Spring MVC

1.框架

  框架(Framework)是整个或部分系统的可重设计,表现为一组抽象构件及构件实例间交互的方法,规定了应用的体系结构,阐明了整个设计、协作构件之间的依赖关系责任分配和

  流程,表现为一组抽象类以及其实例之间协作的方法,它为构件复用提供了上下文关系。

2.MVC模式

  MVC架构是"Model-View-Controller"的缩写,中文"模型-视图-控制器"。

  模型(Model):负责封装应用的状态,并实现应用的功能,通常分为数据模型和业务逻辑模型(数据模型用来存放业务数据,业务逻辑模型包含应用的业务操作)

  视图(View):用来将模型的内容展示给用户

  控制器(Controller):用来控制应用程序的流程和处理视图所发出的请求

  技术分享

  交互关系:

  (1)  展示视图给用户,用户在视图上进行操作

  (2)  用户提交请求到达控制器,在请求中包含了想要完成的业务功能和相关数据

  (3)  控制器处理用户请求,把请求数据进行封装,然后选择并调用合适的模型,请求模型进行状态更新然后选择接下来要展示给用户的视图

  (4)  模型会处理用户请求的业务功能,同时进行模型状态维护和更新

  (5)  当模型状态改变时,会通知相应视图,然后视图获取需要展示的数据,展示给用户

3.MVC框架的功能

  1.以Controller为中心完成对系统流程的控制管理

  2.从请求中收集数据

  3.对传入的参数进行验证

  4.根据请求调用相应业务逻辑完成数据处理

  5.将处理结果返回给视图

  6.国际化支持

  7.针对不同视图技术提供不同的解析支持方案

  8.针对jsp视图技术提供标签库

  9.通过拦截器链实现面向方面编程完成系统控制

  10.对文件上传、下载等功能的封装

4.Spring MVC的核心

  1.DispatcherServlet

  2.Controller控制器

  3.HandlerMapping

  4.ViewResolver & View

  5.Interceptors 拦截器

  6.LocalResolver

  7.Validate依赖注入

  流程:

  SpringMVC控制的资源发起请求时,都会被DispatcherServlet处理,接着Spring会分析是哪一个HandlerMapping定义的所有请求映射中存在对该请求最合理的映射,取得

  对应的Handler,接着相应的HandlerAdapter处理该Handler,处理之后会返回ModelAndView对象,Spring会把该View对象渲染给用户,在渲染的过程中,发挥作用的是

  ViewResolver 和 View。当Handler返回的ModelAndView中不包含真正的视图,只返回一个逻辑视图名称的时候,ViewResolver就会把该视图解析为真正的视图View对象

  然后返回给用户(返回给浏览器)

 5.Spring MVC常用的Controller

  直接实现Controller接口或AbstractController抽象类

  ModelAndView对象

  用于直接跳转页面的ParameterZableViewController.UrlFilenameViewControllerionController

  在同一控制器类处理多个请求的MultiActionController具体调用的方法通过MethodNameResolver决定

  能封装表单参数的CommondConroller、FormController

6.Spring MVC常用的Handler Mapping

  默认的ControllerClassNameHandlerMapping

  常用的SimpleUrlHandlerMapping

  BeanNameUrlHandlerMapping

  基于注解Controller时使用的DefaultAnnotationHandlerMapping

7.Spring MVC常用的ViewResolver & View

  InternalResourceViewResolver、UrlBasedViewResolver

  CommonsMultipartResolver(文件上传解析器)

  XmlViewResolver

  JstlView,ExcelView及自定义View(jsperReport,Pdf,Excel)

8.基于注解的MVC

  @Controller控制叠的注解不去实现Controller接口就能识别类是一个控制器

  @ResponseBody

  @RequestMapping("/路径/{参数}/{参数}")

  1.加载请求方法之前{}中的参数用于url传值,可以在;零个或多个注解方法时,被注解的方法可以用的参数:@PathVariable、HttpServletResponse、HttpSession

  @Request(请求主参数的注解)、@CookieValue、@RequestHeader(请求头的注解)等。返回值类型void(生成隐含的viewName,按请求路径查找视图)

  2.加载类之前当注解类发送的url请求路径相对于类@PathVariable(参数名),抓取url路径参数的注解,参数名必须和一个RequestMapping中的参数相同,不同的请求

  方法映射不同的处理方法只需要RequestMapping的Method的值不同(get,post)

  3.@InitBinder(初始化绑定器的注解)

Spring MVC