SpringMVC,它是属于Spring基本架构里面的一个组成部分,类似于 Struts2 的一个 MVC 框架,现在SpringMVC 已经成为了大多数企业优先选择的框架,那springmvc工作原理及其流程是什么?下面来我们就来给大家讲解一下。
SpringMVC运行原理:
springmvc执行流程:
1、 用户发送http请求至前端控制器DispatcherServlet,中途会有过滤器Filter进行数据过滤。DispatcherServlet执行doService方法经过数据灌入后调用doDispatch方法,得到请求资源标识符(URI)
用户发起http请求后,Filter过滤器会拦截客户的HttpServletRequest,主要用于对HttpServletRequest进行预处理,根据需要检查HttpServletRequest权限 ,也可以修改HttpServletRequest 头和数据或记录日志等操作。
2、 DispatcherServlet收到请求后调用HandlerMapping处理器映射器。HandlerMapping找到具体的Handler处理器(可以根据xml配置、注解进行查找),生成处理器对象及HandlerInterceptor处理器拦截器(如果有则生成)一并返回给DispatcherServlet。
DispatcherServlet会去遍历所有的处理器映射器,寻找一个可以处理该HTTP请求的Handler。匹配成功的HandlerMapping会向DispatcherServlet返回一个HandlerExecutionChain类型的处理器执行链,里面封装了一个Handler和一堆HandlerInterceptor处理器拦截器。之后会调用getHandlerAdapter方法,遍历所有注入的处理器适配器HandlerAdapter,依次使用HandlerAdapter中的supports方法寻找适合这个handler的适配器子类。
3,将封装好的HandlerExecutionChain类型的handler处理器执行链和适合这个handler的适配器返回给DispatcherServlet。
4,通过获取到适合的适配器子类后执行HandlerAdapter中的 handler方法,方法调用对应的bean,执行该bean对应的Controller类。
DispatcherServlet将控制权交给处HandlerAdapter,处理器适配器将HTTP请求HttpServletRequest和HTTP响应HttpServletResponse传递给Handler(或者说控制器Controller),Controller调用Service业务层对数据逻辑进行处理(交给Mybatis框架),控制器完成请求处理后,返回带有数据模型和逻辑视图的ModelAndView对象传给HandlerAdapter,最终由处理器适配器返回给DispatcherServlet。
5, 最终将执行结果封装成ModelAndView对象返回给DispatcherServlet。
6, DispatcherServlet将ModelAndView传给ViewReslover视图解析器,并根据View进行渲染视图(即将模型数据填充至视图中)
SpringMVC中处理视图最终要的两个接口就是ViewResolver和View ViewResolver的作用是将逻辑视图解析成物理视图
View的主要作用是调用其render()方法将物理视图进行渲染。
根据返回的ModelAndView,通过配置中定义的ViewResolver解析(必须是已经注册到Spring容器中的)结合Model和View,来渲染视图
7,将处理过后的ModelAndView视图交给DispatcherServlet,并由DispatcherServlet响应给客户端(展示画面)。
现在我们应该了解SpringMVC的工作原理以及流程了吧,SpringMVC是Spring框架的一部分,可以方便的利用Spring所提供的其他功能,开发人员使用它能够提高开发效率,这也是它受欢迎的原因之一!最后大家如果想要了解更多java架构师知识,敬请关注奇Q工具网。
推荐阅读: