Spring MVC相关内容整理(面试福利哦)

版权声明:本文为博主原创文章,转载请说明来源地址http://blog.csdn.net/u010963948。 https://blog.csdn.net/u010963948/article/details/86232764

最近有同事问了我很多关于spring mvc的问题,大抵都是用于面试的,平时没人关注这些的,有些问题把我问的也是一愣一愣的,今天有空顺便就整理了下涉及到spring的相关资料问题,不管简单或者无聊,算是给你们的福利吧。

一、第一个当然是关于spirng mvc的请求解析流程了,说实话,这个需要回答的内容确实有点多,但只要说出几个关键词,差不多也OK了。比如:dispatchservlet,handlerMapping,handlerAdapter,viewReslover。顺便贴图给大家:

1、用户发送请求至前端控制器DispatcherServlet

2、DispatcherServlet收到请求调用HandlerMapping处理器映射器。

3、处理器映射器根据请求url找到具体的处理器,生成处理器对象及处理器拦截器(如果有则生成)一并返回给DispatcherServlet。

4、DispatcherServlet通过HandlerAdapter处理器适配器调用处理器

5、执行处理器(Controller,也叫后端控制器)。

6、Controller执行完成返回ModelAndView

7、HandlerAdapter将controller执行结果ModelAndView返回给DispatcherServlet

8、DispatcherServlet将ModelAndView传给ViewReslover视图解析器

9、ViewReslover解析后返回具体View

10、DispatcherServlet对View进行渲染视图(即将模型数据填充至视图中)。

11、DispatcherServlet响应用户


二、你使用过Spring mvc的话,那么就该让你谈一谈和Strust2的区别,有什么优点,知道以下内容,基本也就可以了。

Struts2是类级别上的拦截,一个类对应一个request上下文,SpringMVC是方法级别的拦截,一个方法对应一个request上下文。而且Struts过滤后是去Struts配置文件中找Action,每个类的请求你都要配置对应的拦截器。而SpringMVC过滤后是去controller中找对应于@RequestMapping注解的url绑定的方法。

也因为拦截器原因,导致Struts2的action比较乱,因为它要定义属性来获取请求中参数的数据,而属性在一个类的方法间是共享的(方法间不能独享request、response数据),属于多例模式。所以会有点乱。而SpringMVC中请求参数与controller中方法的形参自动配对(在名字相同,或请求参数与形参的属性名相同,或通过@RequestParam注解指定条件下会自动将请求参数的值赋给形参)方法间可以独享request、response数据,属于单利模式。(单例模式,在多线程访问的时候有线程安全问题,不要用同步,会影响性能的,解决方案是在控制器里面不能写字段)。

springmvc的入口是一个servlet即前端控制器(DispatchServlet),而struts2入口是一个filter过虑器(StrutsPrepareAndExecuteFilter)

三、待续...(后面打算整理出关于面试经常碰到的问题,比如redis的数据类型,存储方式,集群配置;Mq消息的生产者,消费者问题;线程相关的线程池事项;spring的核心AOP和IOC的说辞;数据库动态读写分离与连接池;分布式等)。

参考链接:https://www.cnblogs.com/xiaoxi/p/6164383.html

猜你喜欢

转载自blog.csdn.net/u010963948/article/details/86232764
今日推荐