SpringMVC题目汇总

SpringMVC

1、谈谈你对SpringMVC的理解

SpringMVC是一个基于java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把模型-视图-控制器分离,将web层进行职责解耦,把复杂的web应用分为逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。
SpringMVC我觉得它是对Servlet的封装,屏蔽掉Servlet很多的细节;
刚学Servlet的时候,要获取参数需要不断的getParameter
现在只要在SpringMVC方法定义对应的javaBean,只要属性名与参数名一致,SpringMVC就可以帮我们实现将参数封装javaBean上了。

2、请描述Spring MVC的工作流程,描述一下DispatcherServlet的工作流程

1、用户发送请求至前端控制器DispatcherServlet;
2、DispatcherServlet收到请求后,调用HandlerMapping处理器映射器,请求获取Handle;
3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet;
4、DispatcherServlet调用HandlerAdapter处理器适配器;
5、HandlerAdapter经过适配调用具体处理器(Handler,也叫后端控制器);
6、Handler执行完成返回ModelAndView;
7、HandlerAdapter将Handler执行结果ModelAndView返回给DispatcherServlet;
8、DispatcherServlet将ModelAndView传给ViewResolver视图解析器进行解析;
9、ViewResolver解析后返回具体View;
10、DispatcherServlet对View进行渲染(即将模型数据填充到视图中);
11、DispatcherServlet响应用户。

在这里插入图片描述

补充细节

统一的处理入口,对应SpringMVC下的源码是在DispatcherServlet下实现的
该对象在初始化就会把映射器、适配器、视图解析器,异常处理器、文件处理器等等初始化掉
所有的请求其实都会被doService方法处理,里面最主要就是调用doDispatch方法
通过doDispath方法我们就可以看到整个SpringMVC处理的流程

映射器实际返回的是HandlerExecutionChain,里面有映射器Handler+拦截器List

获取到HandlerExecutionChain后,就会去获取适配器,一般我们获取得到的就是RequestMappingHandlerAdapter
在代码里面可以到的是,经常用到的@ResponseBody和@Requestbody的解析器,然后在初始化的时候加到参数解析器List中

得到适配器后,就会执行拦截器前置处理,处理完后,就会调用适配器对象实例的handle方法执行真正的代码逻辑处理
核心的处理逻辑在invokeAndHandle方法中,会获取得到请求的参数并调用,处理返回值
参数的封装以及处理会被适配器的参数解析器进行处理,具体的处理逻辑取决于HttpMessageConverter的实例对象

压缩关键信息:
DispatcherServlet(入口)
DispatcherServlet.properties(会初始化的对象)
HandlerMapping(映射器)
HandlerExecutionChain(映射器最终实例+拦截器List)
HttpRequestHandlerAdapter(适配器)
HttpMessageConverter(数据转换)

3、Spring MVC的优点

1、可以支持各种视图技术,而不仅仅局限JSP;
2、与Spring框架集成(如IOC容器、AOP等);
3、清晰的角色分配:前端控制器(dispatcherServlet),请求到处理器映射(handlerMapping),处理器适配器(HandlerAdapter),视图解析器(ViewResolver);
4、支持各种请求资源的映射策略。
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Irons_one

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值