只要问及Spring MVC框架,这一题基本80%的概率会被问及,大致如下:
从webxml中 servlet的配置开始, 根据servlet拦截的url-parttern,来进行请求转发,大致处理流程如下:
A用户向服务器发送请求,请求被 springMVC前端控制器(DispatchServlet)捕获
B前端控制器对请求URL进行解析,得到请求资源标识符(URL)然后根据该URL调用页面处理器(HandlerMapping)获得该Handler配置的所有相关对象(包括Handler对象以及Handler对象对应的拦截器),最后以HandlerExecutionChain对象的形式返回;
C前端控制器根据获得 Handler 选择一个合适的 HandlerAdapter 适配器处理
D Handler 对数据处理完成以后将返回一个 ModelAndView()对象给前端控制器
E Handler 返回的 ModelAndView()只是一个逻辑视图并不是一个正式的视图,前端控制器通过ViewResolver 试图解析器将逻辑视图转化为真正的视图 View;
F DispatcherServle 通过 model 解析出 ModelAndView()中的参数进行解析最终展现出完整的 view 并返回给客户端;
@requestMapping:用于请求 url 映射。
@RequestBody: 注解实现接收 >
以下我的个人理解加上网络上的所查阅资料,对于spring mvc框架的一些总结,不足之处还望指出
在web模型中,MVC是一种很流行的框架,通过把Model,View,Controller分离,把较为复杂的web应用分成逻辑清晰的几部分,是为了简化开发,减少出错,同时也为了组内开发人员之间的配合。总之就是一种分层工作的办法。
(1) 用户通过浏览器向服务器发送请求,请求被springmvc的前端控制器DispatcherServlet拦截;
(2) DispatcherServlet拦截到请求后,会调用HandlerMapping处理映射器;
(3) 处理器映射器根据请求URL找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给调用处理器DispatcherServlet;
(4)DispatcherServlet会通过返回信息选择合适的HanderAdapter(处理器适配器);
(5)HanderAdapter会调用并执行Handler(处理器),这里的处理器值的就是程序中编写的Controller类,也被称之为后端控制器;
(6)Controller执行完成后,会返回一个ModelAndView对象,该对象中包含视图名或包含模型和视图名
(7)HandlerAdapter将ModelAndView对象返回给DispatcherServlet;
(8)DispatcherServlet会根据ModelAndView对象选择一个合适的ViewReslover(视图解析器)
(9)ViewReslover解析后,会向DispatcherServlet中返回具体的View
(10)DispatcherServlet对view进行渲染(即将模型数据填充至视图中)
(11)视图渲染结果会返回给客户端浏览器显示
(1)DispatcherServlet接口:Spring提供的前端控制器,所有的请求都有经过它来统一分发。在DispatcherServlet将请求分发给Spring Controller之前,需要借助于Spring提供的HandlerMapping定位到具体的Controller。
(2)HandlerMapping接口:能够完成客户请求到Controller映射。
(3)Controller接口:需要为并发用户处理上述请求,因此实现Controller接口时,必须保证线程安全并且可重用。Controller将处理用户请求,这和Struts Action扮演的角色是一致的。一旦Controller处理完用户请求,则返回ModelAndView对象给DispatcherServlet前端控制器,ModelAndView中包含了模型(Model)和视图(View)。
从宏观角度考虑,DispatcherServlet是整个Web应用的控制器;从微观考虑,Controller是单个>
以上就是关于Spring MVC常见面试题解析全部的内容,包括:Spring MVC常见面试题解析、spring mvc 常用注解详解、个人对于spring mvc框架的理解等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)