1.1介绍
SpringMVC是Spring Framework提供web组件,全称是Spring Web MVC,是目前主流的实现MVC设计模式的框架,提供前端路由映射、视图解析等功能。Java web开发者必须要掌握的框架。
1.2什么是MVC?
MVC是一种架构思想,将软件按照模型、视图、控制器来进行划分。
Model:模型层,指工程中的JavaBean,用来处理数据。
一般有两种JavaBean:
①实体类JavaBean:一般用来存储业务数据,例如Student、User等。
②业务处理javaBean:用来处理业务逻辑或者进行数据访问,指Servlet或者Dao对象。
View:视图层,指html,jsp等页面。作用是和用户进行交互,进行数据展示。
Controller:控制层,指工程中的Servlet,用来接收用户请求和响应浏览器。
流程:
用户通过视图层发送请求到服务器,在服务器中请求被Controller接收,Controller调用相应的Model层处理请求,处理完毕结果返回给Controller。Controller再根据处理结果找到对应的View视图层,渲染数据最终响应给浏览器。
SpringMVC对这套MVC流程进行了封装,帮助开发者屏蔽了底层细节,并且开放出相关接口供开发者调用,让MVC开发更加方便。
二、SpringMVC实现原理
2.1核心组件
DispatcherServlet:前端控制器,负责调度其他组件的执行,可以降低不同组件之间的耦合,是SpringMVC中的核心模块。
Handler:处理器,完成具体的业务逻辑,相当于Servlet。
HandlerMapping:处理器映射器,DispatcherServlet通过HandlerMapping将请求映射到不同的Handler。
HandlerInterceptor:处理器拦截器,是一个接口,如果我们需要进行一些拦截处理,可以通过实现这个接口完成。
HandlerExecutionChain:处理器执行链,包含两部分内容,Handler和HandlerInterceptor,系统会有一个默认的HandlerInterceptor,如果有额外的拦截处理,可以添加拦截器进行设置。
HnadlerAdapter:处理器适配器,Handler执行业务方法前,需要进行一系列的操作包括表单的数据验证、数据类型转换、把表单的数据转换到POJO等。这些一系列的操作都是由表单数据完成,DispatcherServlet通过HandlerAdapter执行不同的Handler。
ModelAndView:封装了模型数据和视图信息,作为Hnadler的处理结果,返回给DispatcherServlet
ViewResolver:视图解析器。DispatcherServlet通过它,把逻辑视图解析为物理视图,最终把渲染的结果响应给客户端。
三、SpringMVC的执行流程
①用户发送请求给前端控制器DispatcherServlet。
②前端控制器DispatcherServlet收到请求调用HandlerMapping(处理器映射器),去查找处理器Handler。
③处理器映射器HandlerMapping找到具体的Handler(处理器)(可以通过注解,xml配置等查找),生成处理器对象及处理器拦截器一并返回给DispatcherServlet。
④前端控制器调用HandlerAdapter(处理器适配器),处理器适配器调用自定义的处理器类controller
⑤自定义的处理器类controller将得到的参数进行处理并将结果返回给处理器适配器HnadlerAdapter。
⑥处理器适配器将得到的结果ModelAndView返回给前端控制器DispatcherServlet
⑦前端控制器将ModelAndView传给视图解析器ViewResolver。
⑧视图解析器ViewResolver将得到的参数从逻辑视图转换为物理视图返回给前端控制器。
⑨前端控制器调用物理视图进行渲染并将结果返回给前端。