SpringMVC
一. MVC(Model View Controller)
1.概念
采用模型(Model)-视图(View)-控制器(controller)的方法把业务逻辑、数据与界面显示分离。把众多的业务逻辑聚集到一个部件里面。MVC的理念就是把数据处理、数据展示(界面)和程序/用户的交互三者分离开的一种编程模式。
2.MVC的三个核心部件分别是:
-
Model(模型):所有的用户数据、状态以及程序逻辑,独立于视图和控制器
-
View(视图):呈现模型,类似于Web程序中的界面,视图会从模型中拿到需要展现的状态以及数据,对于相同的数据可以有多种不同的显示形式(视图)
-
Controller(控制器):负责获取用户的输入信息,进行解析并反馈给模型,通常情况下一个视图具有一个控制器
3.MVC的好处:
-
耦合性低:视图(页面)和业务层(数据处理)分离,一个应用的业务流程或者业务规则的改变只需要改动MVC中的模型即可,不会影响到控制器与视图
-
部署快,成本低:MVC使开发和维护用户接口的技术含量降低。使用MVC模式使开发时间得到相当大的缩减,它使程序员(Java开发人员)集中精力于业务逻辑,界面程序员(HTML和JSP开发人员)集中精力于表现形式上
-
可维护性高:分离视图层和业务逻辑层也使得WEB应用更易于维护和修改
二. SpringMvc
工作流程:
-
用户向服务器发送请求,请求被Spring 前端控制DispatcherServlet捕获
-
DispatcherServlet对请求URL进行解析,得到请求资源标识符(URI)。然后根据该URI,调
用HandlerMapping获得该Handler配置的所有相关的对象(包括Handler对象以及Handler对象对
应的拦截器),最后以HandlerExecutionChain对象的形式返回 -
DispatcherServlet 根据获得的Handler,选择一个合适的HandlerAdapter。(附注:如果成
功获得HandlerAdapter后,此时将开始执行拦截器的preHandler(…)方法) -
提取Request中的模型数据,填充Handler入参,开始执行Handler(Controller)。 在填充
Handler的入参过程中,根据你的配置,Spring将帮你做一些额外的工作
HttpMessageConveter: 将请求消息(如Json、xml等数据)转换成一个对象,将对象转换
为指定的响应信息 -
Handler执行完成后,向DispatcherServlet 返回一个ModelAndView对象
-
根据返回的ModelAndView,选择一个适合的ViewResolver(必须是已经注册到Spring容器
中的ViewResolver)返回给DispatcherServlet -
ViewResolver 结合Model和View,来渲染视图
-
将渲染结果返回给客户端