java面试题之个人对SpringMvc的原理实现理解

只要用到了Spring,就肯定涉及到了web端,那就难免不涉及到SpringMvc,即使用SpringBoot,也不过是再封装了一遍SpringMvc,使得xml不用配置,基于注解确实简单,但是面试官确认你会不会这个Spring的Web端的依据那就是问你面试题啦,一般都会问到SpringMvc的原理实现。

理解原理,首先一定要知道(不一定理解,知道做什么的就可以)以下几个组件:

1.DispatcherServlet:(Dispatcher Server Applet)调度服务程序,这个组件充当的作用就是一个中央调度器(调度的意思可以百度)的作用,负责接收前端传过来的url和参数,返回结果给前端,调度一下各种组件的功能。

2.HandlerMapping:处理器映射器(这个组件只负责查找),功能主要是查找Spring的Xml配置的或者是以注解形式声明的处理器(controller)和拦截器(interceptor),并返回到DispatcherServlet。

3.HandlerAdapter:处理器适配器(这个组件负责调用),功能是调用controller和intercepter,intercepter一般用来拦截请求和js,css什么的,执行完拦截器之后,将可执行的controller进行执行,执行完的controller返回的ModelAndView(模型和视图,可能是一个页面的路径,也可能是一种格式的数据,也可能是字符串)返回给DispatcherServlet。

4.Handler:具体的处理器(controller),用来处理具体的业务并返回ModelAndView。

5.ViewResolver:视图解析器,解析ModelAndView,可解析Freemaker(静态资源模板技术),jsp(集成html代码的java页面),excel等等成View视图返回给DispatcherServlet。

6.View :视图,View是一个接口,实现类支持不同的View类型(json、jsp、freemarker、excel...)

知道了上边的几个组件,那么原理步骤就很容易解释了,几乎几句话就可以概括:

首先是前端的请求,DispatcherServlet接收到请求后,将url指向的地址转发并调度HandlerMapping进行查找处理器(此时查不到将抛出路径不正确异常),HandlerMapping将查找到的处理器和拦截器返回给DispatcherServlet;

DispatcherServlet接收到处理器和拦截器后调用HandlerAdapter,HandlerAdapter执行完拦截器后(拦截器三个方法,第一个方法preHandle负责拦截访问controller的请求,如果拦截器拦截了该controller,则404,另外两个方法自行百度)继续执行通过拦截器的controller,执行完controller返回ModelAndView给DispatcherServlet。

DispatcherServlet接收到了ModelAndView,调用ViewResolver去解析ModelAndView,解析成的具体View再返回给DispatcherServlet。

最后DispatcherServlet将View返回给前端处理。

如果你看了只少两遍,是不是感觉很好理解?最重要的DispatcherServlet一直充当一个调度员,调度器的角色,他就好比一个程序员在调用各种类的各种方法一样,本次博客全是本人理解,若有不当之处,还请指出。

猜你喜欢

转载自blog.csdn.net/weixin_42359392/article/details/84949902
今日推荐